Пока я тут излагал мысль она несколько растеклась по статьям

1. Модель функционального разделения сознания и бессознательного. Введение
2. Модель проявления сознания или ИНС без эффекта забывания
3. Проблема «двух и более учителей». Первые штрихи
4. Обучение с подкреплением на нейронных сетях. Теория

казалось аудитория имеет нужные знания, все таки у нас цвет общества — программисты :) Но увы… последний опрос показал, что далеко не все программисты в курсе ИИ-проблематики. А хамоватые студенты набежавшие на эти статьи в комментариях — еще не доучились.

Попробуем подытожить и считайте это расширенная статья обещанная в опросе. А заодно мне сказали, что в ИИ-сообществе есть серьезные проблемы. После ряда комментариев — да видимо действительно есть. Попробуем посмотреть на тенденцию.



Субъективное мнение о ИИ-сообществе



Начнем с этого. Многим это не понравится, но попробуйте трезво это оценить сами.

Как и в любой науке ИИ уже обросло полноценной инфраструктурой :). И вот как это выглядит:

1. У подножья пирамиды ИИ сидят оракулы — это те люди которые громогласно заявляют мы занимаемся «сильным ИИ», «слабый ИИ» — нас не интересует. Это фрики — как минимум те, которых я встречал все были именно фриками. Это креационисты 21 века, они берут на вооружение логику и пытаются построить фиктивные теории. Не больше не меньше. Если Вы молодой человек который еще в этом не повяз — выбирайтесь из этого болота, оно засасывает хорошие умные головы. По началу даже не разговаривайте с такими людьми — они питаются вашей энергией, как и религиозные секты.
2. На ступеньках к пирамиде ИИ расположились инженеры. Они не гнушаются заниматься «слабым ИИ», часто это их хлеб. Еще в институте они выбирают себе очень узкое направление — распознавание номеров машин, обработка изображений, предсказание на бирже, управление роботами и т.д. и т.д. Часто они имеют звания доктора наук, и чуть реже имеют звание профессоров. Если Вы молодой человек, который попал на работу к таким инженерам, или слушаете их лекцию — впитывайте основы, иначе Вы непременно затем скатитесь к подножью. Но впитав основы — не увлекайтесь. Не становитесь студентом, который знает только терминологию — выражайте свои мысли естественно. Попробуйте сделать что-то сами, никогда не судите о алгоритме, подходе только на основании того, что вам сказал такой инженер. Очень часто оказывается, что он просто начитался книг и судит по ним (да, я знал хороших ИИ-профессоров, которые в этом признавались, что делало им только больше чести ). Если Вы ему поверите в том, чем он непосредственно сам не занимается, то не проверив по оригиналам — через пару лет уже вы будете передавать это знание с чужих слов. В итоге вы будите ошибаться чуть более чем совсем. Конечно, проверять по оригиналам и пробовать воспроизвести эксперименты авторов методов — это трудоемко. Но иначе у вас со временем создаться поверьте ложное впечатление, что вы что-то понимаете в соседних областях. И Вы превратитесь уже не просто в нахального студента, знающего лишь терминологию, но человека с авторитетом, потому что занимались частной (ее вы с гордостью будите называть конкретной и с конкретными результатами) задачей, но при этом будите распространять заведомо неточные впечатления о том, что не пробовали экспериментально.
3. На ступеньках в тени, немного удаляясь от зноя присели нейрофизиологи-инженеры, они так утомились выполняя свою работу с пациентами, что думать еще о том, что на другой стороне, кричат ИИ-инженеры — уже не вмоготу. Они тихонько берут и делают в своих экспериментах, то что можно разобрать в отдаленном гуле перебранки ИИ-инженеров. Кое что у них выходит, что то нет… но как правило они не поспевают за мыслью ИИ-инженеров. Но благодаря тому, что они реально воплощают это в человеко-машинный интерфейс — это всегда выглядит эффектно.
4. Но вот вопрос — кто же расположился в беседке на вершине пирамиды? Как не странно — она пуста, нет вход свободен, просто никто туда не идет. Иногда лишь бегающие инженеры в пылу драки туда влетают, и также быстро уходят. Это место для ИИ-теоретиков. Инженеры часто не отличают где низ, а где вверх — поэтому они путают теоретика с оракулом. Но так устроен мозг ИИ-инженера, он видя теоретические обобщения не видит конкретную задачу и не понимает а фурычит ли это. Он не видит леса за деревьями, а видя солнце он принимает это за откровение оракула — и думает, тьфу ты — зачем мне к солнцу подниматься, чтобы делать что-то не конкретное. Так он и не поднимается над деревьями, боясь опалиться о солнце. А те кто опалился — он видит — пресмыкается у него под ногами, на подступах к пирамиде. Но конечно, если он учился со слов современника — он и не знает, что те кто создал представление о нейронных сетях, генетических алгоритмах, нечеткой логике и много чего еще… все же бывал в этой беседке на вершине пирамиды, просто об этом не очень принято говорить.

Работа теоретика трудна и не благодарна



Когда наконец случается протолкнуться через толпу ИИ-инженеров и попасть в беседку ИИ-теоретика ждет незавидная судьба. Сверху ему становится отчетливо видно, что права на простые решение простых задач у него нет. Он уже не может себе позволить взять частную, но так любимую ему ранее конкретную задачу. Он видит, что чтобы его не столкнули с беседки, ему нужно немного охлаждать пыл толпящихся на ступенях пирамиды. И нужно выплескивать воду на всех и не на какую-то отдельную группу.

Но как же можно убедить что выплеснутая вода — годна для питья ИИ-инженерам? Ведь им нужно только примочки для решения конкретных задач. Тут самое сложное. Нужно выродить задачи ИИ-инженеров, только тогда в них окажется что-то общие. И найти решение этой вырожденной задачи. Далее на самом деле не барское это дело приспосабливать вырожденные задачи к реальному миру из которого черпают задачи ИИ-инженеры. Им надо дать хотя бы инструмент, и уже их проблема применять молоток или топор.

Но современному теоретику все сложнее, простенькие вырождения уже построены — уже есть представления о задачах классификации, задачах кластеризации, MDP, PoMDP и т.д. Приходится вырождать задачи так чтобы в них все больше оставалось бы проблем реального мира.

Вот мы и рассмотрим одну такую вырожденную задачу.

Необходимый минимум для понимания — как задать функцию пригодности с помощью искусственной нейронной сети и зачем это нужно?


Вначале мне придется снять «розовые очки» с тех кто их одел. Поговорим о способности ИНС к прогнозированию и скорости их обучения. Все в соответствии с Минским — прогнозируют плохо и медленно. И хотя я буду показывать на перцептроне Розенблатта, разницы для других сетей принципиальной нет.

Это вам ИИ-инженеры подбирают красивую выборку задач с хорошими результатами на конкретных задачах. Я вам покажу ситуацию в лоб. Кто не согласен — берем описанную ниже задачу и тестируем сами и предоставляем конкретные результаты, с выкладкой кода — чтобы можно было воспроизвести результаты (я от болтологии устал — имейте введу).

Задача.

Мы возьмем простую функцию c= a+b, где a и b целые числа от 1 до 64, а c целое число от 1 до 256 (чуть большая размерность нам понадобится потом).

Тогда мы будем иметь 16 входов и 256 выходов в перцептроне. Т.е. на вход будем подавать 2 байта представляя в двоичном виде числа a и b. А чтобы перцептрон немного лучше работал выход будем трактовать как какой номер выхода, такое и число. Чтобы избавится от неоднозначности выхода — работаем по принципу «выигравший забирает все», т.е. учитываем только тот выход который наиболее активен.

Представление о точности прогноза нейронной сети

Если мы обучим перцептрон на всем указанном пространстве входов выходов, то он безошибочно научится складывать. Чтобы это нам графически отобразить нарисуем «красный квадрат» :) где начиная с левого верхнего угла по оси Х отложим число a, по оси Y b, а сумму c на пересечении отобразим точкой, причем в градации красного. Получим следующие:


Но когда всё известно нет места для прогноза. Поэтому давайте уберем каждую вторую точку:



А теперь возьмите любой графический редактор и дополните недостающие точки. Сможете ли Вы восстановить «красный квадрат». Думаю это под силу только одному человеку — да, да Малевичу :)

Но перцептрон ошибется так же как любой другой человек почти в каждой точке, но сохранит лишь общую тенденцию. Вот что у него получится:



Таким образом, мы видим когда нужна математическая точность — прогнозы это гадание на кофейной гуще. Но вот как указание на некоторую тенденцию вполне подходит. Поэтому то перцептроны работают с обработкой изображений, т.к. наш глаз можно обмануть, и детальная точность там не нужна. Но в машинах где нужна арифметическая точность перцептрон работать не будет. Такого же свойства и наша с вами интуиция — это можно сказать использование нашей графической памяти в аналитике. Вот и вся психология.

Функция пригодности

Это вообще-то легко. Выше используемая нами функция c= a+b вполне может отражать пригодность для какого-то процесса. (В экономике любят говорить о функции полезности, у них там все что не полезно, на то не надо тратить деньги :), или же еще говорят о оценочной функции — это тоже любители приценится :) Ну, а для естественных процессов мы не прицениваемся — мы судим о пригодности подходящих условий для наших действий). Ну, пусть мы нагреваем воду в чайнике двумя источниками, отдельно от которых идут датчики температуры каждого источника. Нам нужно определить ��огда вода закипит.

по сути мы эту задачу решили выше. Выше мы обучили перцептрон осуществлять функцию пригодности c= a+b. Осталось лишь красиво отобразить температуру выше 100 градусов, давайте это сделаем в градации зеленного вот что получим.



И видим, что в целом, там где перцептрон не отказался от прогноза (черные точки), он в принципе в тенденции не ошибается. ИИ-инженеры могут несколько поиграться с параметрами, видами нейросетей и т.д. и получат практически без ошибочную картину. В целом ошибок будет много — но граница будет найдена. И таким образом совершенно нечеткое устройство сможет давать руководство к действию достаточно четко. Это и используют те кто обучает агентов бегать исходя из той или иной функции пригодности.

Теперь Вы уже просто не могли не понять как задать функцию пригодности на искусственной нейронной сети ;)

Почему удобно задавать функцию пригодности именно с помощью искусственной нейронной сети?

Этот вопрос несколько сложнее. Казалось бы зачем использовать такую неточную и медленную в обучении сеть, когда можно легко функцию пригодности задать математической формулой? Все равно, что не использовать интуицию, а использовать полученные в школе основы аналитики.

Проблема с математической формулой лишь одна — она жесткая и бескомпромиссная.

А на практике, мы начали мерить температуру и в неизвестных ранее точках — начали получать какую-то аномалию. Не известно почему, но начали. В области еще достаточно небольших температур источников — температура становилось резко выше 100 градусов. Вот как это могло бы выглядеть:



А теперь представим каждое измерение нам дается очень дорого, на него уходит несколько дней и 10000$ — а понять в чем аномалия, и хотя бы на какой области нам очень хочется. Формула наша безвозвратно устарела и не годится.

И вот тут ничего лучше и не придумали как использовать именно нейронную сеть, она хоть и плохой но может дать прогноз — хотя бы такой:



Проблема «двух и более учителей» в разрезе


Это будет немного сложнее. Приготовьтесь думать :), я предполагаю что описанное выше стало понятно даже сторожу на рынке.

Предположим теперь у нас есть два профессора, один из них замерил нагревание нашей воды от двух источников и получил раскладку (справа), а второй раскладку (слева):



Тогда один проанализировал и построил теорию, что температуры источников надо складывать чтобы получить итоговую температуру. А второй построил другую теорию — у него достаточно взять лишь одну из температур того источника который более горяч.

И вот они встретились, конечно переругались, обозвав друг друга неучами, обманщиками и т.д. и ни о чем не договорились, разошлись каждый в свою лабораторию. Обычная история не так ли? Потом каждый из них создал свою «Школу». Начал учить студентов своим теориям, и каждый хамоватый студе��т одной школы спорил с таким же хамоватым студентом другой школы — ведь им надо было перекричать друг друга — так студенты завоевывают место под солнцем на ступеньках нашей пирамиды.

Но вот одному недоучке долго наблюдавшему за борьбой этих школ в один момент стало понятно. А ведь наверное есть некоторый фактор который не учитывает профессор как школы А, так и профессор школы Б. Он решает им сказать, но они закрылись в кабинете, и с улицы людей не пускают, боясь впустить какого нибудь оракула. Поэтому нашему недоучке приходится пробираться через студентов профессоров, они конечно каждый по своему похихикал, покрутил пальцем у виска, а один даже норовил заехать в нос. Поняв, что дела не будет, повзрослев и поотбив бока наш герой удалился в беседку на вершине пирамиды. Там он понял, что пока он не покажет в чем фактор расхождения двух профессоров его слушать не будут. И тут он окинул взглядом сидящих и толпившихся на ступеньках. И понял — не, раз я уже забрался так высоко — зачем мне примерять двух профессоров, вон их сколько каждый с каждым спорит и у каждой пары есть частная проблема — неизвестность общего фактора расхождения теорий.

И начал он думать над проблемой в общих категориях, чтобы потом окропить всех сидящих на ступеньках пирамиды. Да — он заразился духом беседки, и понял почему многие сюда не хотят ходить. Уж очень это ломает человека.

И вот, что он пока понял. Использовать нейронную сеть как описано выше, чтобы выявить где аномалия — не получается. Аномалии повсюду на всем пространстве состояний, и все зависит от того взглядом какого профессора смотреть. Т.е. между каждой точкой профессора А и точкой профессора Б — есть противоречие.

Еще он понял, что чтобы разрешить это противоречие нужно учитывать всю ту историю как ставил эксперимент профессор А и профессор Б, что происходило вокруг в это время. Много не нужных и порой совпадающих данных (ведь профессора делали практически одно и тоже). Но только в них где то есть фактор, который влияет.

Анализировать в ручную утомительно, поэтому он поставил нейронную сеть и подключил к ней обратные связи, которые активировали историю постановки всего эксперимента. И вот если измеряя температуры двух источников после прогноза мы получали данные сходные с данными профессора А, по обратной сети шел сигнал о контексте — истории постановки эксперимента профессором А. И аналогично с данными близкими к профессору Б. Приходилось достаточно много раз менять условия эксперимента, пока не получили сходные с профессорскими паттерны данных.

И вот оно хлоп — и сеть нашла причину расхождения, сразу завертелась работа сети и она построила полную раскладку в зависимости от еще одного найденного фактора, закономерность стала более сложной, чем у профессоров, но дающая поразительно точные данные (правда, пока какой-нибудь третий профессор не получит противоречие)… эту закономерность конечно еще надо как то выбрать из сети и записать аналитически, но тут надо будет обратится вон к тому парню, который разлегся на рядом стоящей скамейке в беседке… ан нет, это оказался сон, наш недоучка-герой задремал пока сеть исправно крутилась, и он пошел пить пиво, размышляя о будущем Вселенной.