Yury Tolochko

+1
с 2016
0 подписчиков
26 подписок

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

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

Для примера, f(x, y) = Ax + By + Cxy + D. Здесь A, B, C, D - это те веса. Функции конечно в итоге сложнее, со степенями, логарифрами и т.д. Вроде Ax + By + Cxy + D + Ex^2 + Fy^2 + Gxy^2 + ... Суть обучения сводиться к подбору таких A,B,C,D чтобы f отдавал нужный результат. Что-то вроде решения системы уравнений из школьной программы. Только уравнения сложные :) Если встретите термин градиентный спуск так вот это и есть метод подбора параметров. Сложность функции - это размер сети. Чем больше параметров, степеней и т.д. использовано - тем больше нужно параметров (ака весов) подобрать.

Как передают картинку параметром функции? Разбивают на пиксели и передают каждый пиксель отдельным параметром, значение - числовое значение цвета. Обычно картинку нормализуют перед этим. К примеру приводят к одному размеру вроде 100 на 100 пикселей. Делают черно-белой. Ограничивают кол-во цветов до 24. Делают контрастнее. И т.д. И каждый из этих 10000 пикселей будет отдельным параметром. По крайней мере так в простых сетях.

Если нужно передать текст то его разбивают уникальные слова и передают каждое слово как отдельный параметр - 1 если есть, и 0 если нет. К примеру, вы обучаете на базе продуктов. Есть категория в которой 5 значений. Значит это будет 5 параметров, для каждой категории, в которых 1 - значит у продукта такая категория, а остальные категории-параметры будут 0.

Я бы оставил как есть. Пару новых статей и проблема сама по себе решится. А вот исправление сделанное толком не проснувшимся программистом рано утром 1го числа может привести к гораздо большим проблемам )

1