Если я сейчас спрошу: Валентин Анатольевич, вам сейчас как? Вы скажите, да так, ничего. На четвёрку, может быть, с плюсом. То есть на огромный комплекс распознанных в этот момент образов вы как-то отреагировали, сжали, свернули и превратили всё это в одну оценку. И этих оценок у каждого из нас штук десять – слов-то в русском языке не так и много, чтобы выразить наше состояние.
А.Г. В русском больше, чем в любом другом всё-таки.
А.Ж. Да, но не 50. От «очень плохо», от «безобразно» до «хорошо», «так себе», «прекрасно», «великолепно», вот, собственно, и всё. Примерно десяток-другой оценок. Это одна из этих функций.
Так вот, мне теперь надо понять, как влияет на эту оценку то, что вы распознаете появление того или другого образа на экране входной информации. Если каждый раз уже знакомое нам красное пятно вызывает у меня отрицательное ощущение, падение этого «хорошометра», значит, это что-то такое плохое. Значит, с помощью тех знаний, которыми я уже обладаю в своём блокнотике, в своей базе знаний, я буду каждый раз при появлении этого пятна делать что-то такое, чтобы оно исчезло, наконец, с глаз долой. А если этот объект, другой образ, для меня полезен, если он каждый раз вызывает повышение «хорошометра»? Скажем, это опять знакомая нам мама с бутылочкой молока, и я нашёл здесь какие-то кнопочки, нажав на которые, я вызову появление мамы? Сразу же поднимется мой «хорошометр», значит, я буду стараться этим пользоваться.
Я вам примерно рассказал алгоритм управления.
Подождите секундочку с этим слайдом. В целом, есть ещё один блок, который я бы сюда добавил, это блок вывода новых знаний из старых. То есть, если система такая умная, что она уже из накопленной совокупности каких-то знаний может вывести какие-то гипотезы, предположения, то этот блок тоже есть. Но, по всей видимости, вывод новых знаний тоже происходит через среду. Это отдельный разговор, потому что здесь речь идёт о языке. То есть, это связано с тем, что я должен сам испытать свою базу знаний. Я должен сам себе представить в уме: «Ага, в этой ситуации, а что если я побегу туда, а получится вот что». То есть я сам себе как бы подаю на свою базу знаний какие-то сигналы. «А что если я вот этот цилиндр рассеку плоскостью, может быть, даже нарисую получившееся сечение графически: вот что получится». То есть, я как бы разговариваю сам с собой, испытываю свою базу знаний и вывожу какие-то новые знания. Вот, пожалуй, грубое описание всех подсистем и всех основных задач, которые должна решать система управления.
И мне кажется, что…
А.Г. Простите, перебью. Здесь везде бинарная логика.
А.Ж. Да.
А.Г. Повсюду?
А.Ж. Здесь никогда нельзя что-то очень сильно утверждать.
А.Г. Потому что когда вы стали говорить про вывод новых знаний, тут вопрос…
А.Ж. Вы понимаете, нервная система дискретна. Всюду бегают однотипные сигналы. Дискретное число входов, рецепторов, дискретное число выходов. Дискретные сигнальщики. Но там есть и некоторые непрерывные величины. Например, частоты. Например, размеры синусов. Они могут иметь какие-то значения. То есть там есть нечто аналоговое, что имеет, по всей видимости, важный смысл. Я могу даже предположить – какой. Может быть, к этому просто можно будет вернуться. То есть дискретная техника не отражает природы. Это очень интересные моменты, связанные уже с немножко другими вопросами. Давайте мы их сейчас опустим. Будем предполагать, что система всё-таки дискретна.
Теперь бы хотелось показать, что можно сделать на основании такой системы управления. Можно строить вполне конкретные реальные системы. Они будут работать. И мы делаем такие системы. Мы делаем даже прикладные системы. А потом я, может быть, скажу несколько слов о том, что не все так просто, что здесь есть на самом деле проблемы. Есть проблемы математические, а есть проблемы принципиальные. Покажу на примере, может быть, близком к тому, о чём говорил Валентин Анатольевич: на примере с мобильным роботом.
Предположим, что существует робот – он пока виртуальный. Но он сделан так, что его можно превратить в железный. Пусть у него есть минимальное количество датчиков. Это три визуальных датчика. Он может видеть наличие препятствия в трех секторах. Робот получает бинарный сигнал: есть препятствие или нет. Три тактильных датчика спереди, один тактильный датчик сзади. Робот – это тележка с управляемым колесом, у него есть очень простой привод, он может ехать вперёд, назад, либо поворачивать влево, вправо.
Покажите, пожалуйста, следующий слайд.
Поместим мы этого робота в среду, в которой случайным образом расположены препятствия. Препятствия стандартные. И попробуем смоделировать очень простую ситуацию. Вот «хорошометр», как я говорил, который сделан таким образом, чтобы робот испытывал неприятные ощущения при соприкосновении тактильных датчиков с препятствием.
Запустим робота в это пространство, пусть он обучается и ползает. Мы с вами тем самым смоделируем ситуацию, когда ребёнок учится ползать по квартире, натыкаясь на препятствия. Он их видит, но он не понимает опасности столкновения и может удариться о предмет, испытав неприятные ощущения. Со временем этот ребёнок поймёт, что препятствие лучше обходить, чем на него натыкаться. И этот процесс мы попробуем смоделировать. Сейчас здесь на этом клипе показано, как почему-то он остановился. Показаны начальные движения робота, он ещё совершенно ничего не знает и совершает какие-то случайные такие движения в пространстве.
Что должен робот понять? Он должен понять сам, самостоятельно, что соударяться с препятствием – это плохо, потому что это больно. Мы ему этого не говорим, он должен это понять сам.
Второе, что препятствие лучше обходить, чем на них натыкаться. То есть от него надо отворачивать, когда я его вижу. И он ещё должен понять, как же ему это делать. У него есть 7 вариантов действия, но он не знает, какое из них надо применять. И он это тоже находит сам. Вот эти задачи он должен решить.
Если бы мы наблюдали за этим роботом достаточно долго (у нас просто нет сейчас этой возможности), мы бы увидели, как постепенно число соударений становится меньше и меньше. Покажите, пожалуйста, следующий клип. Я просто покажу уже следующую фазу поведения робота.
А.Г. Научившегося уже…
А.Ж. Вот здесь мы видим уже, когда он достаточно поумнел для того, чтобы не ударяться лбом в препятствие. Вы видите, что он видит препятствие: сектор, изображённый впереди робота – это его поле зрения. И он вовремя отворачивает от препятствия, как только его заметил. То есть он решил эти задачи, он понял, что ударяться – это больно. Второе, он понял, что надо поворачивать. И третье, он понял, как это надо делать, где надо сдавать задним ходом, где надо поворачивать руль вправо, где надо поворачивать руль влево. То есть он учится у нас на глазах.
Я вам могу эту программу запустить, она достаточно долго работает. Он у нас на глазах выработал такой способ поведения. На самом деле это достаточно интересно.
Если мы будем ставить перед этим роботом другие задачи (из этого угла переехать в тот, или, скажем, найти какие-то полезные батарейки, чтобы подзарядиться и т.д.), эти задачи можно будет решать на базе этого робота. Спасибо, оставьте, пожалуйста, эту картинку. На этом графике показано число соударений робота с препятствиями в единицу времени. Видно, что это число уменьшается со временем. То есть по мере того, как робот обучается, число соударений уменьшается до нуля.
Хотелось бы ещё два слова сказать о том, что (пожалуйста, следующий слайд покажите), эта система управления построена на специальных нейроноподобных элементах. Потому что мы пытались всё-таки до конца идти этим путём и смоделировать нервную систему не только по её функциям, но и по её устройству. Разработали несколько специальных моделей нейронов. Это не те нейроны, которые используются в современных искусственных нейросетях. Это такие нейроны, которые ищут корреляцию входных сигналов, причём обучаются без учителя, самостоятельно. И самый простой из этих нейронов показан на этой картинке. Из этих нейронов можно собрать все подсистемы управляющей системы, о которой я говорил. И блок формирования распознавания образа, и базу знаний, и принятие решений, и аппарат эмоций. То есть можно собрать всю эту систему управления.