@Rubix
Люблю кодить, разрабатываю проекты в разных сферах

Как вообще понять нейронные сети?

Всем привет! Я решил выучить нейронные сети. Как подавать данные и обрабатывать их, я понял, но вот как обучать методом Back-Propagation, пересмотрев кучу видео и статей - так и до сих пор не пойму. Я мог бы выучить другой способ, но мне кажется, для начала нужно выучить этот. Может, есть хорошая статья или видео, как это все понять?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 3
@dmshar
Как вообще понять нейронные сети? - Очень просто. Берете одну книгу, читаете, разбираете, думаете. Потом второе - и делаете то-же самое. Потом третью. И так далее, пока не поймете.
Только книги - а не видосики с ютуба или статейки, написанные невесть кем.
Ответ написан
@rPman
Как подавать данные и обрабатывать их, я понял
Охх прямо раз, и всю боль и проблематику нейронных сетей осознали, а один единственный алгоритм обратного распространения ошибки не поняли.

Когда как алгоритм понимать то не особо и надо.

p.s. мне понравилось объяснение алгоритма обратного распространения ошибки через аналогию:

решает школьник домашнюю задачку (уравнение), решал решал, хоп - получил какой то ответ, подсмотрел правильный в книгу - а там он другой.... не долго думая хоп, нарисовал в решении этот ответ, а чтобы не бросалось в глаза, подправил на один шаг с конца вычисления решения таким образом, чтобы оно давало этот правильный ответ (константы подправил), смотрит, а второе с конца выражение ну очень в глаза бросается, и его подправил, чтобы константы из него получилось то подправленное последнее выражение... и так все решение подшаманил.

Что самое главное, таким образом до начала решения можно не дойти (невозможно будет подправить константы как надо и к примеру придется менять функции, типа заменять деление на умножение, или сложение на возвведение в степень и т.п.)

Полученное решение может не оказаться верным, даже если оно даст правильный ответ, получен он будет неправильным способом.

И главное, непонятно, почему не получается, ведь такой алгоритм ничего не знает о том как именно решать уравнения - этот метод просто подгоняет процедуру под желаемый ответ.

Вот все эти нюансы хорошо показывают недостатки нейронных сетей. Но и достоинства у них есть - они работают.

p.p.s. впервые прочитав про нейронные сети, я вместо того чтобы использовать готовый алгоритм обучения, взял какую то реализацию многомерной оптимизации (их много, кажется ту что использует матрицу якобиана), которой скормил функцию ошибок от обучающих данных и веса сети (небольшой 1 вход 1 выход, десятки-сотни весов) и смотрел как меняется график результата в процессе обучения... почитайте с какими проблемами встречаются эти алгоритмы.

У нейронных сетей алгоритмы по факту занимаются тем же самым, только это приближенные методы и на много порядков производительнее.
Очень рекомендую взять максимально простую нейронную сеть и задачу, и посмотреть как меняется выход от входов в процессе обучения. Посмотреть как меняются веса напротив входов или выходов в процессе обучения. Можно увидеть некоторые закономерности, а если начнете воздействовать на сеть, например править веса, менять функции активации (коэффициенты), удалять целые нейроны и т.п. начнете на интуитивном уровне понимать как это работает под вашу задачу.
Ответ написан
@Rubix Автор вопроса
Люблю кодить, разрабатываю проекты в разных сферах
Я сегодня все таки понял. Я писал тест для искусственного интеллекта, который обучается, и у меня ничего не вышло, по этому и задал этот вопрос. Сегодня сел, посмотрел и там была ошибка: в функции для обучения, которая вызывается много раз циклом в процессе обучения, к весам постоянно присваивала значение. Из-за этого постоянно был одинаковый результат. Одинаковый, потому что я брал не случайные числа, а заранее знал, чтобы понять как это все работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы