ИИ на искусственных нейронных сетях:
до луны пешком
В этом посте предпринята попытка кратенького да простенького объяснения принципов работы искусственных нейронных сетей и оценки их применимости для реализации чего-то, похожего на более-менее приличный искусственный интеллект.
1) Что такое ИНС (искусственная нейронная сеть)?
Те или иные варианты объяснений встречаются в сети постоянно. Подавляющее большинство описаний справедливо, но рассчитано либо на обучающихся (студентов), либо на откровенных спецов.
Итак, что же такое нейросеть? Прежде всего надо усвоить, что нейросеть (искусственная) – алгоритм. Да, это кусочек программного кода, набор уравнений, порядок расчёта какой-либо величины. И основан этот алгоритм на достаточно простом математическом приёме со страшным названием – «аппроксимация». По сути, аппроксимация – это всего лишь замена какой-либо сложной математической функции суммой гораздо более простых. Например, гладкая красная функция со сложной формулой заменяется суммой синих «ступенек», у каждой из которых «формула» очень-очень простая:
Или зелёная функция сигнала сложной формы заменяется двумя простыми функциями синусов:
Зачем это надо? Чтобы упростить вычисления. Практически все используемые ныне числовые алгоритмы имеют такую характеристику, как точность. И если, заменив при помощи аппроксимации сложную формулу кучей простых, можно достичь той же точности, мы только выиграем в скорости, а порой даже просто сможем вычислить что-то.
Второй важной особенностью нейросетей является то, что это не просто аппроксимирующие алгоритмы, а алгоритмы адаптирующиеся. То есть эти алгоритмы изначально придуманы такими, что сами настраиваются на некую имитацию, моделирование чего-то. Как попугай способен воспроизвести речь человека, не понимая её смысла, так и нейросеть может адаптироваться под выдачу некоторого сигнала (или сигналов), не имея точных формул для его вычисления. Чаще всего адаптация нейросети происходит во время так называемого обучения, но существуют и такие разновидности алгоритмов, которым обучение просто не нужно.
Так что есть нейросеть внутри? Тут я приведу картинку, очень известную всем, кто хоть как-то интересовался нейросетями. Знакомьтесь: искусственный нейрон.
Всё, что он делает – вычисляет один выходной результат в зависимости от совокупности входных переменных. Да, математическая функция. Берём одну входную переменную, домножаем на константу, берём вторую, домножаем на другую константу, так же с третьей, четвёртой… потом всё полученное складываем и запихиваем в качестве аргумента некоей определённой функции «активации», чтобы получить результат. В качестве функции активации обычно используется какая-нибудь простая функция – та самая, которая реализует кусочек аппроксимации. Но совсем простые функции не обязательны, можно брать что-нибудь чуток посложнее, главное не увлекаться.
Комбинируя результаты вычислений нескольких нейронов можно получить практически сколь угодно сложную и довольно точную аппроксимацию. Например, результат работы пары сотен нейронов от всего двух переменных может выглядеть вот так:
(в верхнем левом углу – вид функции активации одного нейрона по одной переменной).
Согласитесь, получилась довольно сложная поверхность, которая хорошо повторяет некоторый ландшафт. Цимес в том, что мы в жизни не запишем точную математическую модель (систему уравнений), которая бы абстрактно описала эту поверхность. Скорее плюнем в самом начале и выразим свою заинтересованность данной задачей такой фразой, в которой из приличных слов будут лишь «оно», «конём» и «в три прогиба».
Вот тут-то проявляется самая главная особенность нейросетевых алгоритмов – адаптируемость. Конкретные формулы не нужны! Мы берём нейросеть, натравливаем (обучаем) её на повторение нужного нам результата и готово. Все конкретные цифры с коэффициентами остаются «зашитыми» в нейросети. И если нам потом надо будет получить высоту конкретной точки, мы просто подадим x и y на вход нейросети да считаем результат.
Если нам не нужно моделировать такую сложную поверхность или вообще моделировать не поверхность, мы можем взять иную функцию активации и получить, например:
Пара искусственных нейронов способна слегка привлечь мужскую часть здешнего населения.
Конечно, у нейросетей есть серьёзные недостатки (сложное и долгое обучение, необходимость тщательного подхода к выбору типа нейронов и архитектуры сети, ограниченность применения к конкретным классам задач и т.д.), однако сейчас я хочу рассказать не об этом.
2) Искусственный интеллект
Основными аргументами в пользу использования ИНС для создания искусственного интеллекта были: схожесть с биологическими системами (мозг) и адаптируемость как основное свойство. Однако, если посмотреть на интеллект (не обязательно искусственный) подробнее, на свет выйдут и другие ключевые свойства. Самые важные я отмечу здесь:
Серьёзная информационная ёмкость. Действительно, интеллект обрабатывает весьма большие объёмы информации, пусть даже мы далеко не всегда осознаём данный аспект.
Способность к фильтрации.
Ненужные данные отбрасываются, чтобы сузить информационный поток.
Поиск зависимостей и закономерностей. Например, вспышка света от огня будет сопровождаться ощущением ожога, а сигнал переключения на аварийное питание означает прекращение потока данных от внешних датчиков. Впрочем, простые ассоциации без логических связей тоже очень важны, поскольку именно они позволяют потом находить новые закономерности.
Накопление информации. Память.
Причём такая, которая влияет на текущие процессы.
Воспроизведение внешних воздействий и поведения.
Тут всё понятно – способность к повторению является важнейшим шагом для обучения.
Смысловой (когнитивный) анализ
Способность понимать задачу, адаптироваться к её верному восприятию, оценивать полученное решение на достоверность.
Воспроизведение нового. Сюда можно отнести любое творчество, изобретательство или вновь освоенные навыки.
Как видно из описания, большая часть свойств может быть реализована правильным применением ИНС, а некоторые вообще повторяются в точности. Тем не менее, есть и те, что сейчас не реализуются в том же виде, в котором присутствуют в биологических системах. Тот же самый когнитивный анализ и самонастройка на понимание поставленной задачи – штука слишком сложная для современных программеров. Если и реализовано, то в очень узких спектрах: нейросеть может понять, что от неё хотят – опознать расу человека или марку автомобиля, но если её дать вместо изображения аудиофайл, она не сможет его прослушать.
Впрочем, этот недостаток в первую очередь связан с низкой достижимой ёмкостью сети, слишком сильным упрощением модели нейрона и слабой архитектурной продуманностью. Давайте посмотрим на это дело внимательнее.
3) Пешком до луны
Что надо, чтобы смоделировать человеческий мозг при помощи ИНС? Самое первое, но не самое главное – зафигачить большую нейросеть. Насколько большую? Прикинем: в головном мозге примерно 200 миллиардов нейронов, из которых лишь 20% располагаются в коре, а остальное составляет, так сказать, основную древесину (которая тоже крайне важна, хоть и не участвует в когнитивных функциях).
Каждый нейрон связан с соседями, при этом количество связей для разных областей сильно отличается, но в среднем – от сотни до десятков тысяч. Общее количество связей – 125 триллионов (да-да, больше, чем звёзд в нашей галактике, все уже знают). Каждая связь – не просто чувствительный к одному сигналу вход как в искусственном нейроне, а нехилое такое устройство обработки, эквивалентное примерно тысяче аналоговых транзисторов (именно аналоговых, работающих в аналоговом режиме) и принимающих воздействия от других нейронов, химических веществ – стимуляторов (часть механизма памяти) и внутренних квантовых процессов (да, представьте, это тоже есть).
Для эмуляции лишь одной связи нам придётся «просчитать» на цифровом компьютере аналоговое устройство из 1000 взаимозависимых транзисторов, на каждый из которых оказывает влияние добрый десяток факторов. А теперь представьте: операция умножения выполняется микропроцессором за 7 тактов. Для обсчёта одной биологической нейронной связи нужно произвести 10000 умножений. Одного биологического нейрона – в 1…10 тысяч раз больше (до 100 млн. умножений).
Расчёт одного кванта состояния нейросети в 125 трлн. связей займёт примерно 8,75*10^22 тактов одного процессорного ядра или около 100 000 лет работы 8-ядерного процессора.
Долго ждать. Даже если задействовать все вычислительные мощности планеты (10^17 транзисторов), им потребуется около часа для той же задачи.
А как вообще часто меняются состояния нейронов в мозге человека? Средняя «частота» работы нейрона невелика: 100-200 Гц. В критических режимах она может подниматься вчетверо, однако большую часть времени нейрон способен не заниматься своей «электрической» деятельностью – он растёт, образует новые связи или обрывает старые, копит нейромедиаторы и выделяет химические стимуляторы. Но для настолько сложной системы низкая частота одного элемента имеет весьма малую значимость.
Таким образом, для создания искусственного интеллекта на основе биологически подобной нейронной сети, эквивалентной человеческому мозгу, у человечества пока не хватает ресурсов. Да и мозгов, насколько бы странно это ни звучало. Про нечто большее пока что можно лишь придумывать фантастику.
Будет интересно — задавайте вопросы.
Объёмный комментарий Автора оставлен под кнопкой «МНЕНИЕ Теории-N».
А Вас мы попросим высказать своё мнение!