НЕЙРОСЕТИ РИСУЮТ КАРТИНЫ И ПИШУТ БУГУРТЫ

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Приветствую, дорогие моему сердцу масоны. Сегодня я хотел бы я хотел рассказать вам о "ELIZA", программе, которая за 50 лет до этих ваших телеграмов развлекала почтенную публику бессмысленными разговорами.

В далеких 60-х, когда нейросети считались тупиковой ветвью, ракеты в космос запускали компьютеры мощностью в полайфона, а в Советах культивировали кукурузу, в недрах MIT трудился некто Джозеф Вейценбаум, о котором теперь помнят разве что полтора историка. Его наиболее интересным достижением и является ELIZA, которая после долгой двухгодичной работы явилась свету в 1966. Забегая вперед скажу, что такой большой срок объясняется в первую очередь техническими, а не теоретическими ограничениями. По признанию авторитетных масонов написание его современной реализации заняла меньше недели.

Что же она умела? Она была "пародией" на так называемого "роджерсианского психиатра" (в честь Карла Роджерса), то есть фактически наиеврейским методом отвечала вопросом на вопрос, симулируя крайнюю заинтересованность, изредка вставляя пару десятков заранее написанных типичных фраз. Знакомо? Новомодного "machine learning" и "data science" тут нет — она просто реагирует на ключевые слова и манипулирует ответами пользователя. Алсо, канонiчная реализация Элизы поддерживает так называемые DOCTOR-скрипты, которые теоретически могут задавать ей любую модель поведения. но получается все равно психиатр.

Избалованному end-to-end чатботами масону она может показаться игрушкой на пару минут, но в те времена она произвела настоящий фурор среди страждущей женского общения интеллектуальной элиты США. Сам Вейценбаум был очень удивлен, как много людей (включая его собственную секретаршу) способны проникаться чувствами к такому, в общем-то, примитивному роботу. Впрочем, большинство идей (использование контекста, ключевые слова, ведущая роль) использовались и даже используются ботами до сих пор. Авторитетный робот Женя Густман, о котором я расскажу чуть позже, вообще считает, что "Элиза была прорывом. Все роботы после нее были не более чем слабенькой пародией, они утверждали, что обладают «революционными улучшениями»". Так-то.
На сем откланяюсь. До новых встреч, масоны!

Прошлый пост на удивление зашел, так что в этот раз я решил подойти к делу чуть более обстоятельно и провести краткий экскурс в искусственные интеллектуальные системы "символьной эпохи".

Я имею в виду 1950-е — 1980-е годы, когда в области искусственного интеллекта господствовал символьный подход. Его адепты считали (а некоторые даже считают до сих пор), что ключ к пониманию работы человеческого мозга и, как следствие, к созданию его аналога, состоит в манипуляции с различными символами и построенными на их основе структурами. Проще говоря, создание такой системы должно сводиться к написанию бесконечного количества условий, предусматривающих все ситуации, с которыми может столкнуться интеллект. Те, кто пробовали поболтать с ELIZA, наверняка заметили, что стоит сказать ей что-то посложнее "I love my mother", как она сразу сбивается и меняет тему — полная неспособность к адаптации.
Вслед за знаменитой ELIZA в 1972 году появился PARRY, еще один виртуальный собеседник. Правда, в этот раз это был не психиатр, параноидальный шизофреник. Противоположности притягиваются. Используя скромный словарь, он пытался анализировать тон и эмоции собеседника (то, что сейчас называется "sentimental analysis"), а затем реагировать на них соответствующим образом. Да, они с ELIZA встречались, причем не единожды, а в 1972 даже связались по ARPANET — тому самому прадедушке Интернета. Впрочем, беседовать с ними лично гораздо веселее.

Однако в ИИ нуждались не только одинокие математики. В нем также нуждались одинокие шахматисты. Исторически так сложилось, что игровые ИИ стали мерой прогресса компьютерных наук так же, как игровая графика стала мерой прогресса компьютерного железа. Первые программы-шахматисты появились еще в 50-х, а соответствующий ИИ господина Артура Сэмюэля (на секундочку, изобретателя термина "машинное обучение") считается первой самообучающейся программой, и даже обыгрывал шахматистов-любителей. Однако вынужден вас разочаровать — пресловутый Deep Blue, обыгравший в 1997 году Каспарова, сделал это не благодаря адаптации и самообучению, а благодаря возможности перебирать миллионы вариантов в считанные секунды.

Во второй половине 1970-х в мире ИИ наступил застой. Это связано сразу с несколькими причинами:
1) Физические ограничения. Сейчас эта проблема решается при помощи параллельных вычислений на тысячах и тысячах микроядер (т.е. на видеокартах), однако даже современные микроядра превосходят по своей мощности процессоры той поры.
2) Парадокс Моравека. Те самые "отличить кошку от собаки", "пройти из одного угла комнаты в другой" и прочие задачи, которые трудно формализовать и алгоритмизировать. Здесь то символьный подход и умер, но об этом как-нибудь потом. Сейчас эта проблема так же во многом решена, а в деле распознавания образов машины уже десять лет как дают фору людям.
3) Языки. Язык — штука поистине удивительная и я недаром вынес ее в отдельную группу. Работать с формализованными языками просто, например, программа STUDENT, написанная в 1964, могла решать текстовые задачи из рода "у Маши пять яблок", однако с пониманием смысла это не имеет ничего общего. На данный момент эта проблема так же не решена.
За застоем последовало сокращение финансирования, а отдельные личности даже предсказывали "смерть" ИИ как направления в науке. Лебединой песней символьного подхода стали экспертные системы — специализированные программы, решающие очень узкий круг практичных задач, которые можно формализовать. По своей форме они очень напоминают тесты "Кто ты из Наруто?": череда общих вопросов, на основе которых система делает то или иное предположение. Такие системы до сих пор применяются в больницах, Call-центрах и вообще везде, где ответы можно стандартизировать.

На сегодня всё. Если этот образовач вам так же понравится, я продолжу свой рассказ и поведаю о моих любимых нейроночках, а также о других, таких же важных, но несправедливо неизвестных алгоритмах. Всего доброго!

В прошлый раз мы прошлись по 50-80-м годам, времени, которое отдельные википатриции гордо величают "Золотым Веком ИИ". Впрочем, это не так важно — сегодня мы поговорим о возрождении коннекционизма, складывании ИИ как науки, а также о тех людях, благодаря которым это всё произошло.

Наверняка многие слышали пафосную и слегка пугающую фразу "Нейронные сети могут решить любую задачу!". В оригинале это звучит как "любую непрерывную функцию n переменных можно равномерно приблизить полиномом с любой степенью точности", называется теоремой Вейерштрасса-Стоуна и было доказано аж в 18(!)85 году. Искусственный нейрон (модель Маккалока-Питта) придумали в 1943, объединять их в глубокие сети (перцептрон Розенблатта) — в 1965 (некоторые источники указывают 1958, но об этом позже), самый популярный метод обучения этих сетей (backpropagation aka "обратное распространение" ошибки) появился в 1974, однако активно они исследоваться начали только в конце 1980-х. Почему так долго?

Основного виновника зовут Марвин Минский. Этот пrиятный на вид господин, хороший друг Айзека Азимова, Артура Кларка и Стэнли Кубрика, ныне пребывающий в замороженном состоянии в одном из американских криореакторов, фактически, стоял у истоков самообучающихся систем. В далеком 1951, еще при Сталине, он собрал полноценную нейросеть (ИНС) на вакуумных лампочках! Это тебе не десять строк в питоне, тут уметь надо. Он был удостоен премии Тьюринга (нобелевка по информатике), медали "Пионер компьютерной техники" (частная нобелевка по информатике) и госпремии Японии (нувыпонели). К слову, работать он начинал руководством не менее звездного ученого, Альберта Таккера, известного в узких кругах как соавтор условия Каруша-Куна-Таккера, а в широких — как автор "диллемы заключенного".

В 1969 Минский в соавторстве с белым африканцем, бывшим троцкистом, педагогом и известнейшим программистом Сеймуром Пейпертом опубликовал книгу "Perceptrons". Могущие читать матан оценят её содержание, от себя скажу лишь, что кроме него там содержалась довольно резкая критика самой идеи ИНС. В частности, они утверждали, что "не говоря уже о роли работающих под диктовку машинисток, подвижных роботов или машин, способных читать, слушать и понимать прочитанное или услышанное, перцептроны никогда не обретут даже умения распознавать предмет частично заслоненный другим". Авторитет этих товарищей был настолько велик, что публикация заставила инвесторов, а затем и ученых на долгие два десятка лет забыть нейронки. Сам Минский впоследствии сожалел об этом, но былого уже не вернуть.

Почему же о них вспомнили? В конце 1980-х наступил второй AI winter (кризис, упадок, разочарование. В будущем нам будут встречаться всё больше терминов, не имеющих лишенных надмозга аналогов в русском языке. "Состязательные порождающие сети", господи, серьёзно?). В первую очередь это связывают с распространением так привычных нам сейчас настольных PC: Apple и IBM захватывали всё новые рынки, а громоздкая спецаппаратура вроде LISP-компьютеров и систем на алгебраических процессорах устаревала прямо на глазах, и сейчас только-только возвращается в наш жизнь. Да-да, те самые видеокарты. Экспертные системы, апогей старого подхода, были слишком неудобны в обслуживании, требовали больших ресурсов и квалифицированных кадров. Также появилось множество новых перспективных IT-областей, в которые потекли средства, и над поверженными останками символьной теории стала мрачная тень коннекционизма.

Основная идея коннекционизм, ранее известного как Parallel Distributed Processing, состоит не в манипуляции символами и структурами, а вершинами и связями между ними. Самым очевидным примером являются настольные игры-бродилки — повинуясь некоторым сигналам системы управления (игральная кость), вы по связям переходите из одного состояния в другое (движитесь по полю). Движение может подчиняться сколь угодно сложным правилам, вы можете возвращаться назад и прыгать в многомерном пространстве до тех пор, пока не придете в одно из нескольких конечных состояний (не дойдёте до финиша). То, что я сейчас описал, называется цепью Маркова, в честь Андрея Маркова старшего, русского математика из 19 века, известного всем, кто интересовался теорией вероятностей или математическим анализом. Если мы еще немного абстрагируемся от настолочек и представим, что бродить могут не только люди-игроки, но данные (числа, строки, структуры), меняющиеся в процессе хождения и меняющие само игровое поле, то мы придем к коннекционизму. Впрочем, если этот термин не был вам знаком, то о самой популярной коннекционистской технике, нейронных сетях, слышали все.

Популярно о нейронках писали многие, так что буду краток. В самом своём простом виде это множество вершин-нейронов, связанных друг с другом рёбрами. Некоторые вершины имеют рёбра-входы, по которым поступает информация извне, некоторые — рёбра-выходы. рёбра также имеют веса, которые символизируют важность информации, которая по нему передается. В примитивном случае число, передающееся по ребру, просто умножается на соответствующий весовой коэффициент. И, наконец, в вершинах есть некоторая функция, которая принимает числа с входных рёбер, что-то с ними делает и как-то отсылает результат на выход. Звучит эффективно, неправда ли? Цимес здесь заключается в том, что применение тех самых обратных распространений, основанных на тех самых теоремах из 19 века позволяют системе автоматически калибровать веса, стоит лишь показать, как выглядят правильные ответы — в этом и состоит процесс обучения. Таким образом две абсолютно одинаковые в архитектурном плане системы, но с откалиброванными по-разному весами могут решать абсолютно разные задачи, так, например, почти все системы распознавания образа на картинках и видео, которые вы можете явно или неявно встречать в различных программах сейчас, основаны на одной единственной сети ImageNet, и даже зачастую на 80% одинаково настроены. Подробнее об ImageNet и прочем Image Processing разговор пойдёт позже.

Теперь вам даже не обязательно разбираться в том предмете, проблемы которого вы решаете — за вас это сделают ваши же творения, нужно лишь найти хороший набор данных, коих с 1990-х накопилось неимоверное количество. Коннекционистский подход взял верх, но столкнулся с новыми проблемами, из которых можно выделить три основных:
1) Фиксированный размер входных данных. Хорошо, когда у вас есть фиксированные 100 показателей, по которым вы хотите сделать вывод, например, результаты медобследования. Но что же делать, если вы хотите работать с чем-то менее стабильным: картинками разных размеров, видео, да даже с текстами? Эта проблема в основном решена.
2) Отсутствие памяти. Привычные архитектуры нейронных сетей не обладают памятью как таковой, что приводит к необходимости увеличения сложности самих сетей, а значит уменьшает их потенциальную надёжность, производительность и предсказуемость. Попытки решить эту проблему предпринимаются последние годы, и среди них есть успешные.
3) Непредсказуемость. По-хорошему нейронная сеть это черный ящик. Вы даёте ей что-то на вход, получаете что-то на выходе, но что происходит внутри остаётся загадкой, и даже если система показывает сверхвысокую точность, всегда остаётся опасность что однажды, в самый критичный момент... Это аргумент против самой архитектуры, так что решить эту проблему в рамках нейросетей — задача не из лёгких.

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

Приветствую! Сегодня мы немного забьём на хронологию повествования и разберемся, что же такое нейронные сети и почему их так много. Это тема очень обширная и в один образовач не войдёт, почему мы сегодня поговорим о самых базовых и исторически более ранних архитектурах. Не стоит забывать, что реальные нейросети зачастую состоят из множества слоёв разной архитектуры, соединенных то последовательно, то параллельно. Самых терпеливых ждет развлекалочка в конце.

Принцип работы нейросетей мы подробно рассмотрели во второй части, сейчас же лишь напомню, что это множество машин-нейронов, которые умеют обрабатывать информацию, и соединяющих их связей, по которым эта информация передаётся. Самое первое, что приходит на ум, это соединить много нейронов подряд и обучить эдакую "макаронину" чему-нибудь простому, например обнулять вход. Множество таких сплетенных "макаронин" дают перцептрон, модель, придуманную еще в ранних 60-х (1), и способную обучиться простой логике, арифметике и прочей классификации. Сейчас их принято называть FFN(N) от "Feed forward neural network", и в чистом виде применимы только в самых простых задачах.

Следующей идеей будет соединить всё со всем, записать туда какую-нибудь информацию и оставить работать, а потом посмотреть, что произойдёт. Идея не нова, первая публикация на эту тему датируется 1982 годом (2). Абстрактно это можно представить как коробочку сложной формы, в которую засыпаются резиновые шарики: какое-то время они конечно поскачут, но при равной начальной конфигурации мы будем получать равную конфигурацию в конце. Тогда обучением такой системы будет подбор формы коробочки. Это называются нейронной сетью Хопфилда, в честь, собсно, Джона Хопфилда, который вообще-то был биологом и чуть-чуть физиком, но прославился так, как прославился. Применять их можно, когда у вас есть какие-то сложные комбинации, которые вы хотите восстановить из реальных данных: наиакадемичнейшим примером является удаление шума с примитивных картинок. Существует также вариант с разделенными входами и выходами, так называемые Машины Больцмана. Впрочем, и те, и другие сейчас представляют сугубо исторический интерес.

Целый класс нейросетей, называемый автоэнкодерами (автокодировщиками), построен на простой идее избыточности информации. Фотография автомобиля, даже в низком качестве весящая килобайты данных, может быть с высокой точностью описана несколькими сотнями переменных, из которых можно восстановить его внешний вид. Конечно, если искать все эти переменные вручную и писать громоздкие алгоритмы их вычленения, то работа займёт многие годы и будет стоить тысячи нефти, поэтому почему бы не переложить эти обязанности на машину? Именно так в 1988 году подумали Эрви Буляр и Ив Камп (3), а потом... забыли еще на 20 лет, пока в 2006 методу не переоткрыли Хинтон и Салахутдинов (4). Сейчас существует так много их разновидностей, что на их разбор ушел бы отдельный образовач (а почему, собственно, и нет?), так что если где-то Вам встретится аббревиатура, оканчивающуюся на AE, знайте — это они родимые.

Другим обширным классом нейросеток являются рекуррентные нейронные сети, RNN. Они решают одну из основных проблем нейросетей — работают с данными произвольной длинны, то есть с текстами, видео и прочей музыкой. Достигается это за счет того, что они обладают неким подобием оперативной памяти и считывая по слову (букве, кадру, такту, Небу, Аллаху), шаг за шагом продвигаются по данным. Все "нейросеть написала текст для баттла", "нейросеть подделала выступление Обамы", а также всё, что связано с переводом и музыкой за редким исключением сюда. Первая полноценная публикация об RNN датируется 1990 годом (5). Сюда так же относятся такие известные архитектуры, как LSTM и GRU, о которых обязательно поговорим позже.

Всё это хорошо, а как же картинки? Очевидно, что данные тут совсем нелинейные, да и объёмы большие. Тут нам помогут Свёрточные нейронные сети, CNN. Тут реализован достаточно интересный механизм — существуют много "свёрточных слоёв", которые выполняют работу один поверх другого. Например, если вам нужно распознать объект на изображении, то первый слой берёт квадратик 2х2 пиксела и учится распознавать на нём уголки, следующий слой берёт квадрат 2х2 уголка и учится распознавать составленные из уголков палочки, следующий слой берёт 2х2 палочки и учится распознавать завитушки и так далее. Добавим скользящее окно чтения изображения и вуаля!- 98,3 процента точности в отличении коше и собак, выше чем у человека, не говоря уже о скорости. А если её развернуть, то можно получить вполне себе генератор котиков. Так, на основе двух (свёртывающейся и развёртывающейся, CNN и DCNN) сетей построен словивший в своё время хайпу pix2pix. Первая публикация за авторством Яна ЛиКуна и команды относится к 1998 году (6).

И последние в списке, но не по значению, так популярные сейчас Generative Adversarial Networks aka GAN. Если сами нейросети выглядят как плод ленивого гения, то GANы — почти апофеоз лени. Это по факту две сети, генератор и дискриминатор, которые играют в некоторую игру и пытаются обмануть друг друга. Генератор пытается создать нечто, очень похожее на данный пользователем эталон (например, на покемона), а дискриминатор — отличить сгенерированного покемона от эталонного. То же справедливо не только для картинок, но и для любых других данных. В сочетании с RNN и CNN (последнее называется DC-GAN и находится сейчас на пике хайпа) показывают просто волшебные результаты, были бы данные. Первая публикация (2014 год) принадлежит Йену Гудфеллоу и команде (7).

На сегодня это всё. В ближайших образовачах мы подробнее рассмотрим подвиды RNN, GAN, AE и, возможно, кое-какие экзотические архитектуры. Пытливые умы рад буду видеть в комментариях. Спасибо за внимание!

P.S.:

Как и обещал, даю ссылку на сайт, где можно поиграться с демками некоторых популярных нейронок. Хостинг бесплатный, так что сайт имеет свойство падать, please, be patient. http://pretrained.ml/

P.S.S.: Ссылки на упомянутые мной статьи. А вдруг.

(1) “The perceptron: a probabilistic model for information storage and organization in the brain.” Rosenblatt, Frank

(2) “Neural networks and physical systems with emergent collective computational abilities.” Hopfield, John J.

(3) “Auto-association by multilayer perceptrons and singular value decomposition.” Bourlard, Herv?, and Yves Kamp

(4) “Reducing the Dimensionality of Data with Neural Networks.” G. E. Hinton, R. R. Salakhutdinov

(5) “Finding structure in time.” Elman, Jeffrey L.

(6) “Gradient-based learning applied to document recognition.” LeCun, Yann, et al.

(7) “Generative adversarial nets.” Goodfellow, Ian, et al.


Источник: vk.com

Комментарии: