Искусственный интеллект – надежды и опасения - Джон Брокман
Шрифт:
Интервал:
Набирая эти строки на компьютере, я в действительности ищу равновесные состояния в n-мерной топологии градиентов. Возьмем всего один: тепло. Температура моего тела выше температуры воздуха, поэтому я излучаю тепло, которое подлежит восполнению в моем «ядре». Даже бактерии в пищеварительном тракте используют некие датчики для измерения концентрации сахара в окружающей жидкости и размахивают своими жгутиками, стараясь плыть «вверх по течению», где запас сахара наиболее велик. Естественное состояние всех систем состоит в том, чтобы снижать расход энергии, и этот процесс в целом описывается через явление энтропии (тенденции объектов мироздания переходить из упорядоченных состояний в неупорядоченные; рано или поздно все распадается – Вселенная в том числе).
Но как объяснить более сложное поведение, например нашу способность принимать решения? Ответ тоже заключается в спуске по градиенту.
Наш мозг
При всем великолепии и поразительной непостижимости человеческого интеллекта наука снова и снова приходит к выводу, что наш мозг функционирует подобно любой другой сложной и многослойной системе с циклами обратной связи, которые ориентируются на выполнение, выражаясь математически, «функции оптимизации». С тем же успехом можно рассуждать – хотя бы в некотором смысле – о «движении под горку».
Суть интеллекта заключается в обучении, и мы обучаемся через сопоставление входных данных с положительными или отрицательными реакциями (наградами или наказаниями). Так, для ребенка «этот звук» (голос матери) связывается с матерью благодаря прочим усвоенным ощущениям, скажем, сытостью и комфортом. Точно так же «это движение» мышц приближает мой большой палец ко рту. Со временем, методом проб и ошибок, нейронная сеть мозга фиксирует и усиливает эти связи. А вот движение мышц, которое не приближает большой палец ко рту, представляет собой негативную корреляцию, и мозг ослабит данную связь.
Конечно, я сильно упрощаю. Пределы градиентного спуска составляют так называемую проблему локальных минимумов (или проблему локальных максимумов, если налицо не спуск, а подъем по градиенту). Когда вы попадаете в горы и вам захотелось вернуться на равнину, постоянно двигаться вниз ошибочно: да, скорее всего, вы спуститесь в долину, но вряд ли перевалите через следующую гору, отделяющую эту долину от вашего дома. Для достижения цели понадобится либо ментальная модель (то есть карта) топологии, чтобы знать, куда подняться для выхода из долины, либо умение переключаться туда и обратно между градиентным спуском и случайными перемещениями, чтобы вы могли покинуть горы.
Так, собственно, и поступает комар, привлеченный моим запахом: он спускается, когда улавливает мой «шлейф», и совершает случайные движения, когда теряет след или натыкается на препятствие.
Искусственный интеллект
Такова природа. А что насчет компьютеров? Традиционное программное обеспечение работает иначе, следует детерминированным правилам жесткой логики: «Если так, то делаем вот так». Но программное обеспечение, взаимодействующее с физическим миром, демонстрирует склонность функционировать по законам физического мира. Это подразумевает «шумные» входы (сигналы датчиков или человеческое поведение) и вероятностные, а не детерминированные результаты. А потому, что вполне ожидаемо, перед нами очередной спуск по градиенту.
Программное обеспечение ИИ является здесь наилучшим примером, в особенности у тех разновидностей ИИ, которые используют искусственные модели нейронных сетей (включая сверточные[117] или «глубинные» нейронные сети многих уровней). Типичный процесс «обучения» в данном случае состоит из демонстрации множества примеров какого-либо предмета или явления (допустим, изображений кошек с подписью «кошка») заодно со случайно выбранными примерами другого рода (изображениями прочих предметов и явлений). Это так называемое «контролируемое обучение», поскольку нейронная сеть обучается на подобранных примерах, и оно подразумевает «состязательное обучение» на основе распознавания данных, которые не релевантны желаемому результату.
Такие нейронные сети, как и их биологические прообразы, объединяют в слои тысячи узлов («нейронов» – по аналогии с нашим мозгом), каждый из которых связан со всеми узлами в слоях выше и ниже; изначально все соединения обладают разной, случайной силой. Слой выше образуют данные, а слой ниже – правильные ответы. Любая последовательность соединений, ведущая к правильному ответу, усиливается («вознаграждается» или «поощряется»), а ошибочная последовательность ослабляется («наказывается» или «штрафуется»). Если повторить эту процедуру десятки тысяч раз, мы получим сеть, полностью обученную оперированию конкретными данными.
Можно трактовать все возможные комбинации связей как поверхность планеты, с холмами и долинами. (Здесь несущественно то, что поверхность всего лишь трехмерна, а фактическая топология многомерна.) Оптимизация, которую осуществляет сеть в ходе обучения, есть просто процесс поиска самой глубокой долины на поверхности планеты. Процедура состоит из следующих шагов:
1. Определить «функцию издержек», характеризующую эффективность решения задачи.
2. Запустить процесс и оценить его выполнение при указанных издержках.
3. Изменить значения связей и запустить процесс повторно. Различие между двумя результатами будет направлением, или «наклоном», в котором сеть перемещалась между двумя испытаниями.
4. Если налицо движение «под уклон», изменить соединения необходимым образом. Если налицо движение «в гору», изменить их противоположным образом.
5. Повторять до тех пор, пока не будет зафиксировано улучшение в любом направлении. Оно будет означать, что мы достигли минимума.
Отлично! Но это, вероятно, лишь локальный минимум (так сказать, первый шаг по горам), и нужно двигаться дальше, если мы хотим добиться большего. Продолжать спуск невозможно, нам неизвестно местонахождение самой низкой точки, и придется как-то ее отыскать. Существует множество способов это сделать; вот несколько из них:
1. Повторять процедуру много раз, меняя параметры случайным образом и фиксируя результат каждого испытания; по сути, мы «встряхиваем» систему и проверяем, не опустится ли она ниже. Если во время какого-то испытания будет обнаружена более глубокая долина, следует отталкиваться от этих параметров.
2. Нужно не просто двигаться под уклон, а еще спотыкаться как пьяный (это так называемый «стохастический спуск по градиенту»). Если делать это достаточно долго, в конечном счете обнаружится дно. Чем не метафора жизненного пути?
3. Просто искать «любопытные» функции, которые выделяются разнообразием (скажем, предельных значений или изменений цвета). Предупреждение: такой способ способен привести к безумию – чрезмерная «любопытность» побуждает сеть создавать оптические иллюзии. Так что нужно сохранять здравомыслие и обращать пристальное внимание на признаки, предположительно реальные по своей природе, а не на артефакты и ошибки. Это «регуляризация» системы, которую возможно реализовывать различными способами –
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!