Пока я тут излагал мысль она несколько растеклась по статьям
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$ — а понять в чем аномалия, и хотя бы на какой области нам очень хочется. Формула наша безвозвратно устарела и не годится.
И вот тут ничего лучше и не придумали как использовать именно нейронную сеть, она хоть и плохой но может дать прогноз — хотя бы такой:
Проблема «двух и более учителей» в разрезе
Это будет немного сложнее. Приготовьтесь думать :), я предполагаю что описанное выше стало понятно даже сторожу на рынке.
Предположим теперь у нас есть два профессора, один из них замерил нагревание нашей воды от двух источников и получил раскладку (справа), а второй раскладку (справа):
Тогда один проанализировал и построил теорию, что температуры источников надо складывать чтобы получить итоговую температуру. А второй построил другую теорию — у него достаточно взять лишь одну из температур того источника который более горяч.
И вот они встретились, конечно переругались, обозвав друг друга неучами, обманщиками и т.д. и ни о чем не договорились, разошлись каждый в свою лабораторию. Обычная история не так ли? Потом каждый из них создал свою «Школу». Начал учить студентов своим теориям, и каждый хамоватый студент одной школы спорил с таким же хамоватым студентом другой школы — ведь им надо было перекричать друг друга — так студенты завоевывают место по солнцем на ступеньках нашей пирамиды.
Но вот одному недоучке долго наблюдавшему за борьбой этих школ в один момент стало понятно. А ведь наверное есть некоторый фактор который не учитывает профессор как школы А, так и профессор школы Б. Он решаем им сказать, но они закрылись в кабинете, и с улицы людей не пускают, боясь впустить какого нибудь оракула. Поэтому нашему недоучке приходится пробираться через студентов профессоров, они конечно каждый по своему похихикал, покрутил пальцем у виска, а один даже норовил заехать в нос. Поняв, что дела не будет, повзрослев и поотбив бока наш герой удалился в беседку на вершине пирамиды. Там он понял, что пока он не покажет в чем фактор расхождения двух профессоров его слушать не будут. И тут он окинул взглядом сидящию и толпившихся на ступеньках. И понял — не, раз я уже забрался так высоко — зачем мне примерять двух профессоров, вон их сколько каждый с каждым спорит и у каждой пары есть частная проблема — неизвестность общего фактора расхождения теорий.
И начал он думать над проблемой в общих категориях, чтобы потом окропить всех сидящих на ступеньках пирамиды. Да — он заразился духом беседки, и понял почему многие сюда не хотят ходить. Уж очень это ломает человека.
И вот, что он пока понял. Использовать нейронную сеть как описано выше, чтобы выявить где аномалия — не получается. Аномалии повсюду на всем пространстве состояний, и все зависит от того взглядом какого профессора смотреть. Т.е. между каждой точкой профессора А и точкой профессора Б — есть противоречие.
Еще он понял, что чтобы разрешить это противоречие нужно учитывать всю ту историю как ставил эксперимент профессор А и профессор Б, что происходило вокруг в это время. Много не нужных и порой совпадающих данных (ведь профессора делали практически одно и тоже). Но только в них где то есть фактор, который влияет.
Анализировать в ручную утомительно, поэтому он поставил нейронную сеть и подключил к ней обратные связи, которые активировали историю постановки всего эксперимента. И вот если измеряя температуры двух источников после прогноза мы получали данные сходные с данными профессора А, по обратной сети шел сигнал о контексте — истории постановки эксперимента профессором А. И аналогично с данными близкими к профессору Б. Приходилось достаточно много раз менять условия эксперимента, пока не получили сходные с профессорскими паттерны данных.
И вот оно хлоп — и сеть нашла причину расхождения, сразу завертелась работа сети и она построила полную раскладку в зависимости от еще одного найденного фактора, закономерность стала более сложной, чем у профессоров, но дающая поразительно точные данные (правда, пока какой-нибудь третий профессор не получит противоречие)… эту закономерность конечно еще надо как то выбрать из сети и записать аналитически, но тут надо будет обратится вон к тому парню, который разлегся на рядом стоящей скамейке в беседке… ан нет, это оказался сон, наш недоучка-герой задремал пока сеть исправно крутилась, и он пошел пить пиво, размышляя о будущем Вселенной.
Автор: tac