Заголовки с использованием термина "нейронные сети" в самых различных вариациях часто встречаются на страницах новостных сайтов, посвящённых достижениям в IT-сфере. Заинтересовавшийся подобными вопросами человек, вероятно, заглянет в Википедию и, вполне возможно, будет обескуражен определениями вроде «многопараметрической задачи нелинейной оптимизации». В данной публикации приведено объяснение данной терминологии простым, понятным для большинства языком.
Известно, исследования в области ИИ идут давно. Фактически они начались даже раньше появления первых вычислительных машин, тех самых, ламповых, многотонных, величиной с дом. Сам же термин «Искусственный интеллект» был предложен в 1956 г., на семинаре в Стэндфордском университете. Человеку пока что известен только один вид полноценного интеллекта - собственный, и потому, идея о простом копировании структуры мозга и протекающих в нём мыслительных процессов лежала на поверхности. Эта концепция непрерывно развивалась с сороковых, когда были опубликованы первые теоретические работы Маккалока и Питтса, до наших дней, когда программное обеспечение, построенное на самообучающихся нейронных сетях, ищет для вас картинки в поисковиках и помогает вашему смартфону фокусироваться на лицах при съёмке фотопортретов.
Из школьного курса биологии мы знаем, что это особая разновидность нервных клеток, способная обрабатывать и передавать электрические и химические сигналы. Многие видели увеличенные изображения нейрона: небольшое тело клетки и длинные, расходящиеся во все стороны отростки. Они делятся на многочисленные дендриты, отвечающие за ввод информации в нейрон и единственный аксон, играющий роль вывода. Принцип действия нейрона достаточно прост: если общая мощность сигналов, пришедших на ввод, превышает какой-то определённый порог, нейрон подаёт сигнал на вывод. Переданный сигнал может активировать следующий нейрон, тот - следующий и так далее, по цепочке. Казалось бы - слишком простая схема, как она способна обеспечить вариативность мышления, способности к обучению, всё то, что делает нас разумными? Дело в том, что сигналы, пришедшие с разных дендритов, «весят» для клетки по-разному.
Условно говоря, если сигнал, пришедший с дендрита А, вызовет возбуждение нейрона и передачу дальше, то от сигнала, поступившего с дендрита Б, нейрон «даже не почешется». Но вот одновременного сигнала «весящих» поодиночке немного дендритов Б и В опять-таки хватит для того, чтобы передать информацию к следующей клетке. И главное, в процессе обмена сигналами свойства нейронных связей, а значит, и «веса» приходящих по дендритам сигналов способны меняться. Это и обеспечивает способность живых существ к обучению. Описанную выше схему в общих чертах и воспроизводят в современных нейронных сетях. Речь, разумеется, только о программном обеспечении, никто не строит ЭВМ, копирующие структуру человеческого мозга «в железе».
Нейрон в программе - лишь набор ячеек памяти, содержащих данные об условных «весах» входящих сигналов и некий относительно простой алгоритм, определяющий, пропускает ли нейрон сигнал далее, и какой у него будет «вес». Существует масса схем, описывающих то, как эти виртуальные нейроны следует соединять друг с другом собственно в нейронную сеть. Эти схемы разработаны для различных задач, но какую бы схему ни использовал программист, неизменно одно - перед использованием сеть требуется обучить. Да-да, обучить, как обучают живое существо. Разумеется, для программы этот процесс внешне выглядит совсем не так, как для первоклашки в школе, он максимально автоматизирован, через сеть прогоняют громадные объёмы данных с большой скоростью, но на элементарном уровне суть одна и та же.
Как в живом мозгу под действием внешних раздражителей меняются «веса» нейронных связей, так и в программе, в зависимости от того, удалось ли ей, например, распознать изображение, изменяются «веса» входящих и исходящих сигналов. В результате сеть становится способна «видеть» аналогии и некие общие принципы. Например, ей «показывают» одну за другой множество картинок. На некоторых изображены автомобили. Оператор или обучающая программа сообщает: «Это автомобиль. И это. И вот это». Каждый раз автомобили немного разные и «веса» некоторых связей между нейронами меняются. Некоторые, но не все - те, что описывают общие для всех автомобилей черты, остаются неизменными. И когда уже обученной нейронной сети показывают изображение, она по соответствию с этим чертами, способна «понять», есть ли на картинке автомобиль.
Однако нейронные сети используют не только для распознавания изображений. Робототехника, прогнозы погоды, анализ биржевых котировок и даже принятие решений о выдаче кредитов, во всех этих областях активно применяются программы на основе нейронных сетей. Эффективность работы некоторых наиболее продвинутых программ, построенных с помощью этой технологии, действительно поражает и заставляет задуматься о том, что создание полноценного искусственного интеллекта не за горами. Печальными последствиями подобного научного прорыва фантасты пугают человечество - вот уже более полувека, но не стоит забывать, что на сегодняшний день даже самые сложные и мощные нейронные сети всё ещё бесконечно далеки от человеческого мозга и по количеству нейронов и по вариативности связей между ними. Гугловский поисковик быстро найдёт вам нужную картинку в сети, но задумываться о захвате мира он принципиально неспособен.