Найти тему
42 подписчика

Рашид. Создаем нейронную сеть


Расскажу про одну из лучших книг для того, чтобы разобраться в принципах работы нейросетей: от понятно объяснённой математики до пошаговой практики разработки собственной сети на Python.

Зачем нужны нейросети?
Компьютеры - это, по сути, калькуляторы, выполняющие арифметические операции с огромной скоростью. Даже просмотр видео или прохождение компьютерной игры - не требуют чего-то большего, чем быстрого выполнения арифметических операций, а точнее — быстрое следование инструкциям с использованием 0 и 1.

Но есть задачи, например распознавание (лиц, рукописных текстов, произносимых фраз) или генерация оригинального адекватного контента, которые трудно реализовывать по заранее составленным инструкциям. Для решения таких задач существуют нейронные сети, являющиеся одним из подходов к созданию искусственного интеллекта.

Как работают нейросети?
Мы решаем задачу распознавания в формате «Вопрос --> Анализ --> Ответ», но компьютеры (усовершенствованные калькуляторы) не могут думать, они получают вводную информацию, проводят обработку и выдают результат. В случае обычных программ, обработка идет по заданному алгоритму, например Ввод: 34, Расчет: 4+4+4, Вывод: 16, нейросети же создают свой внутренний алгоритм, действуя через многократную попытку проверки результата при различных пробных значениях с их уточнением. Давайте разбираться на примере!

Предположим, что мы не знаем формулы преобразования километров в мили, но знаем что:
— (а) существует какая-то линейная формула преобразования одной величины в другую (мили = км * с, где с - некая константа)
— (б) существуют проверочные значения: 0 км = 0 миль и 100 км = 62,137 мили.

Тогда мы (если бы мы действовали как нейросети) начнем с того, что возьмем случайное значение константы с (например 0,5), поймем результат (100 км * 0,5 =50 миль), сравним его с проверочными значениями и определим величину ошибки (62,137 - 50 = 12,137).

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

Далее повторим уже знакомые действия, взяв с=0,7. В таком случае, размер ошибки окажется отрицательным, значит, следующее значение константы нужно будет подбирать в диапазоне от 0,6 до 0,7. Что мы и сделаем с учетом того, что чем меньше размер ошибки, там меньше должна быть поправка при следующей итерации. В результате, через какое-то количество рациональных переборов вариантов, получим с=0,62137.

Если ваш внутренний математик достает вас сейчас вопросом: зачем все это было нужно, если можно было просто посчитать ответ с использованием математической формулы? То для него есть простой ответ: дело в том, что для решения большинства задач не существует однозначных алгоритмов для расчета и, соответственно, математических формул.
...
2 минуты