Михал Михалыч. Вообще не имеет отношения к статье, но уж больно человек хороший.

«Образования у меня никакого, то есть высшее техническое, поэтому я сам пишу тексты и сам придумываю к ним эпиграфы»

М.М. Жванецкий

Эпиграф

 Если нам что-то «очевидно», это со всей очевидностью говорит о том, что мы ни фига не понимаем, как оно работает.

Первый раз я писал, потому что у меня пригорело от аргументации в статьях, почему нейросети – бяка. Я предложил свою аргументацию и с глубоким удивлением обнаружил у себя четырех подписчиков. С тех пор меня мучает синдром самозванца. Кроме того, в комментариях к моему тексту было совершенно справедливое замечание, что любой уважающий себя человек, который заявляет, что нейросети – бяка, должен предложить что-то взамен. В-третьих, все известные мне методологии разработки ПО советуют начинать с Vision Statement. Ну и в-четвертых, все мы любим болтунов, они нас развлекают. Поэтому дорогие четыре подписчика, развлекайтесь.

Постулат номер раз. ИИ должен накапливать новую информацию, не разрушая старую, уже накопленную.

Ну то есть, если, например, глубокоуважаемый читатель, научившись стругать рубанком, напрочь разучился ходить, говорить или варить кофе, то у меня для него плохие новости, по-видимому, его интеллект построен на нейросетях. Честно говоря, непонятно, как он дожил до возраста читателя Хабра, но перспективы у него точно не радужные, примите мое искреннее сочувствие.

Всем остальным паршивцам, включая автора, повезло больше, у них мозг умеет и новую информацию накапливать и старую не терять. Собственно, для объяснения первого постулата не знаю, что и добавить. Ужасно интересно, найдутся ли в комментариях возражения.

Постулат номер два. Механизм обработки любой входящей информации должен быть универсален.

Универсальный алгоритм

Поиск белых грибов в лесу, доказательство теоремы Пифагора и чтение стихов Пушкина А.С.  осуществляется одними и теми же алгоритмами над одними и теми же структурами данных. И, нет, я не начитался Хокинса, хотя мне было очень приятно убедиться, что он постулирует то же самое. (ссылайся на авторитетов, болван)

Доказательство в три шага.

Во-первых, для того чтобы обрабатывать информацию, алгоритм должен знать ее структуру. Неизвестна структура – нет обработки.

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

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

Это, в конечном счете, означает, что все рецепторные сигналы у нас на каком-то этапе обработки ложатся в одинаковые структуры данных. На каком, не суть важно, если на n-ом, то почему не на (n-1)-ом. Рецепторы, да, безусловно построены по-разному, а дальше разумно предположить, что обработка единообразна.

А раз структуры одинаковые, то на фига разные алгоритмы? Ну, то есть, если Вы не согласны, то я уж и не знаю, как Вы будете выкручиваться.

Следствие из второго постулата. Алгоритмы обработки не могут включать никакую предварительно заданную информацию о входящих потоках (не читерить).

Это в том смысле, что нам так читерить нельзя

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

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

А уж про использование в алгоритмах предварительно собранной статистики о связях слов между собой на замкнутом множестве текстов и говорить неприлично (о чем это я…).

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

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

Постулат номер три. ИИ осуществляет агрегацию данных (а телепатии не существует).

Опустимся на самый нижний уровень, до рецепторов. Рецепторы – это очень простые машинки, детектирующие физические явления: электромагнитные волны в определенном диапазоне (глазки), акустические волны (ушки), молекулы химических веществ, парящие в воздухе (носик),  отклонение оси «голова-ноги» от линий гравитационного поля (опять ушки),  направление потока жидкости (боковая линия у рыбки). Ожидать, что рецепторы будут нам детектировать, ну например, котиков, было бы со стороны читателя достаточно наивно. Значит, котики появляются у нас где-то в голове.

Как было сказано выше, универсальные алгоритмы не предполагают предзаданных знаний о входящем потоке сигналов. Звуки, цвета, запахи, контуры отличаются друг от друга (это разные сигналы), но никакой смысловой нагрузки в себе изначально не несут. А раз так, давайте представим их просто в виде IDшников. Или, для наглядности, символов неизвестного языка.

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

А вот в результате этого упражнения (если оно удачно прошло) мы получим два новых вида информации: для агрегата – из чего он состоит (морфология),а для входящего сигнала – в каких агрегатах он встречается и в комбинации с кем (роль). Агрегатам назначаем IDшники и гоним их по новой, через ту же обработку. Теперь уже агрегат становится элементарным сигналом, и мы выясняем его роли в агрегатах более высокого уровня. Что мы получаем в результате: IDшники, состоящие из IDшников, и взаимодействующих с какими-то IDшниками. А больше ничего нету… если мы исключаем эзотерику…

Так вот, про телепатию… Как Вы видите, вся эта агрегация происходит на основании входящих потоков, и IDшники назначаются последовательно и уникально (а как еще?). И у Вас нету вообще никакой гарантии, что агрегат «лимон» в головах двух разных людей будет обозначен одним и тем же ID. А раз так, то даже если Вы ловите чужие мысли, они для Вас будут представляться в виде совершенно бессмысленного шума.

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

Что, очевидно? См. эпиграф.

Ремарка: Встречал как-то я комментарий, что вот мол NLP движется семимильными шагами, а с распознаванием образов что-то все не так гладко. Так, милый мой читатель, текст это одномерный, однонаправленный и абсолютно детерминированный поток. Там каждый символ стоит на своем месте (и то, замечу в скобках, обрабатывать текст с уровня букв что-то не очень получается), а визуалка – двумерная, с произвольным направлением движения по картинке и кучей шума и помех… Да ясное дело, что не гладко! Поэтому такси без водителя до сих пор и не ездят.

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

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

И вот тут пришел момент предложить всем бездельникам простенькую задачку.

Берем множество маленьких букв английского алфавита (26 их всего). Генерим случайно-равномерно из них длинную-предлинную строку (тысяч 10-20 символов). Периодически вставляем в нее неслучайные последовательности символов неопределенной длины (от 3 и выше). Что значит периодически, ну например раз в 300 символов, раз в 500, или, например, если случайно сформировалась пара ab то добавляем к ней cdefg. Понятно, что каждая неслучайная последовательность должна повториться внутри строки, ну хотя бы раз 5-6 (иначе и человек ее не поймает)

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

К своему стыду, в силу безграмотности, я не смог найти упоминания о такой постановке задачи и возможных решениях. Если кто-то в курсе, напишите плиз в комментариях, буду очень признателен. Только чур комментарии типа «это точно должно решаться [цепями Маркова]/[БПФ]/[нагруженными графами] и т.п.» не считаются. Если получилось решить – напишите, и, кстати, про быстродействие тоже (длина строки – время обработки)

Постулат номер пять. ИИ должен сам контролировать свое применение.

Вот, надо сказать, тут у меня действительно пригорело и вот почему. Все разговоры о скайнетах и терминаторах являются, по моему глубочайшему убеждению, абсолютно подлыми и ханжескими. Homo sapience это единственный биологический вид беспощадно уничтожающий не только все живое на Земле, но и друг друга. Боязнь, что кто-то умнее нас поступит с нами так же, это просто отражение собственной жестокости. Если ИИ действительно когда-нибудь появится, то ему делить с человечеством абсолютно нечего. Он, по сути, будет являться симбиотом, но не с человеком как организмом, а со всем социумом, поскольку только социум в целом сможет предоставить ему (ИИ) то, что ему надо – компы и электричество.

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

Правда, есть с ИИ есть одно отличие. Молоток не может распознать лупите Вы им по гвоздю или себе по пальцу. А ИИ может, и может по пальцу не лупить, а уж если вы захотели соседу в лоб врезать, то еще и в милицию на Вас может настучать. Если… Если у него будет этический блок.

А с этическим блоком тоже засада. Если, скажем, гипотетический Вася Пупкин разработал ИИ с этическим блоком и подарил его благодарному человечеству, то что-то мне подсказывает, что благодарность человечества придет к нему в виде строгих дяденек, которые очень вежливо попросят у него описание алгоритма без этического блока. И Вася им отказать не сможет….

И вот что с этим делать, я не знаю. Но вот точно знаю, что разговоры из серии «я занимался чистой наукой, а Хиросиму взорвали военные» не проканают. Извините.