Нейронная сеть представляет собой множество узлов, называемых нейронами, которые взаимодействуют друг с другом по определенным правилам, подобно нейронам в человеческом мозге. Каждый нейрон может иметь свое значение, например, число. Но важно понимать, что компьютерная нейронная сеть (в отличие от своего биологического прототипа) — это не что-то материальное, а просто компьютерная программа, в которой реализована сложная математическая модель, алгоритм.
Ключевой момент в работе нейронной сети — её обучение, и происходит оно на примерах. Предположим, мы хотим обучить нейросеть распознавать на картинках слона. Тогда мы показываем ей множество изображений со слонами и без (т.е. загружаем в программу нейросети файлы с картинками) и каждый раз сообщаем ей, есть ли на показанном изображении слон. Нейронная сеть анализирует каждую полученную картинку, используя заложенный в неё алгоритм обучения, в результате чего все её нейроны получают некоторое значение, зависящее от поступивших данных. Совокупность значений всех нейронов даёт состояние нейронки в целом, некий слепок. И этот слепок нейросеть связывает с подсказкой обучающего — соответствует ли такое состояние нейронов наличию на картинке слона или его отсутствию.
На начальном этапе обучения нейросеть просто копит информацию о таких соответствиях, но постепенно путём сравнения новых картинок (слепков состояния нейронов) с ранее полученными, она начинает выискивать закономерности в данных. Например, она может "заметить", что для картинок со слонами определенные нейроны имеют определенные значения. Таким образом, она "запоминает" признаки, характеризующие слона. И в последствии при подаче в нейронную сеть новых изображений, она сравнивает их с ранее "запомненными" примерами, ищет схожие признаки и на основе этого сравнения делает вывод о наличии слона на картинке.
Важно понимать, что нейронная сеть не "думает", как человек. Она лишь находит закономерности в данных и принимает решение на основе этих закономерностей.
Аналогичным образом идёт обучение нейросетей более сложным вещам. Например, реагирование беспилотного автомобиля на дорожную ситуацию. Одна часть (говорят — слой) нейросети будет распознавать данные с видеокамеры. А другой слой нейросети со временем "заметит" закономерность, что когда первый слой распознавал красный свет на светофоре, тренер-водитель всегда останавливал машину. И нейронка научится сама останавливать машину в подобных ситуациях.
Нейронные сети обладают уникальной способностью адаптироваться к данным и находить закономерности. Это отличает их от обычных программ, которые основаны на заранее заданных программистом условиях. В случае с нейронкой программист создаёт обучающий алгоритм, а конечный функционал нейросеть обретает в результате самого обучения. Возьмите две "пустые" копии одной и той же нейросети, обучите их разными методами и на разных данных — и получите две разных по способностям и функционалу нейронки. Поэтому нейронные сети способны решать сложные задачи в сферах, где невозможно заранее предусмотреть все варианты решения: распознавание образов, обработка текстовых или голосовых запросов, принятие решений в разнообразных ситуациях.
Впрочем, как мы уже говорили (тут и тут), это ещё не интеллект.
================
Подписывайтесь на Telegram-канал "Цифровой чай". Про IT доступно.