2017-02-04 30 views
1

:)Производное ReLU в обратном переводе

Я собираюсь сделать backpropagation на нейронной сети, которая использует ReLU. В моем предыдущем проекте я сделал это в сети, использующей функцию активации Sigmoid, но теперь я немного запутался, так как у ReLU нет производной.

Вот image о том, как weight5 способствует общей ошибке. В этом примере out/net = a * (1 - a), если я использую сигмоидную функцию.

Что следует писать вместо «a * (1 - a)», чтобы сделать обратную проработку?

Спасибо.

+0

Зависит от фактического выражения ReLU. Существует несколько ReLU, которые можно использовать. Тем не менее, это просто производная от функции ReLU по отношению к ее аргументу. И вы можете вычислить это либо вручную, либо используя, например. вольфрам Альфа. Или просто Google. – zegkljan

ответ

2

поскольку ReLU не имеет производной.

Нет, ReLU имеет производные. Я предположил, что вы используете функцию ReLU f(x)=max(0,x). Это означает, что x<=0 затем f(x)=0, иначе f(x)=x. В первом случае, когда x<0, так что производная от f (x) по x дает результат f'(x)=0. Во втором случае ясно вычислить f'(x)=1.

+0

У меня было ощущение, что это будет решение, но я не был уверен, особенно о 'f '(x) = 0'. Спасибо за ответ :) –

+3

Я просто хочу сказать, что OP корректно, с чистой математической точки зрения, в том, что «ReLU не имеет производной». Это верно из-за одной точки в своей области, которая делает производную неопределенной. Это легко увидеть, если мы просто визуализируем функцию. Но мы просто принимаем соглашение (т. Е. Что производная равна 0 при x = 0) и притворяемся, что функция дифференцируема, но это не совсем верно. – Bridgeburners

 Смежные вопросы

  • Нет связанных вопросов^_^