kaipa: (Default)
http://creativemachines.cornell.edu, директор Hod Lipson.

Исследовательская группа занимается построением роботов и алгоритмов управления ими на основе эволюционных принципов.

Например, эволюция конструкции робота-многоножки:



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

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

Другое направление той же лаборотории -- Eureqa -- программа, которая ищет закономерности в данных, и в частном случае способна выводить некоторые физические законы из наблюдений.
kaipa: (Default)
Оказывается, пока многие, включая меня, хлопают ушами, в прошлом году произошел качественный перелом в Deep Learning: машинный алгоритм впервые превзошел человека в распознавании лиц (ссылки в журнале [livejournal.com profile] ailev). Это уже даже не шахматы.

Я начал копать, что же случилось за последние годы, а именно (как считает ailev) c 2012г, когда начался бурный рост публикаций, денег и результатов в этой области. Похоже, что накопилась критическая масса и прорвало. А дальше положительная обратная связь. Чем больше интереса -- тем больше денег, чем больше денег -- больше результатов, больше результатов -- больше интереса и далее по спирали. Причем, рост возможностей нейронных сетей обусловлен в основном использованием более оптимальных топологий и способов обучения, нежели чем ростом вычислительных ресурсов (GPA, параллелизм и т.п.). То есть развитие качественное. В списке прогнозов будущего развития от экспертов в области эта мысль звучит неоднократно.

Большой прогресс происходит не только в "статических" сетях, но и сетях с памятью, вроде RNN и LSTM.

Об уровне интереса к теме можно судить по представительности Deep Learning Summit, ближайший из которых состоится через три недели в Сан-Франциско.

Причем, практически все результаты и алгоритмы свободны и открыты, что еще более подогревает интерес и позволяют большему числу людей включиться в работу. Образованная недавно компания OpenAI (в числе спонсоров, кстати, неутомимый Илон Маск) ставит своей целью нести все это добро людям. Отрадно, что это все двигается талантливой молодежью, тот же Ilya Sutskever -- Research Director OpenAI -- автор ряда очень сильных результатов (список работ), например известного вот этого, ему еще нет и 30 лет.

Впрочем, я не снимаю своего мнения, озвученного в ряде комменатриев, что к пониманию, как работает мозг, к моделированию мышления, к знанию, как создать сильный AI, эти успехи нас не приближают. Те же RNN, которые научились посимвольно генерировать текст -- это суррогат знания, китайская комната. Мне кажется, что научились, наконец, пользоваться инструментом, придуманным уже добрые полсотни лет назад, и сейчас происходит (но пока не проходит) эйфория от успехов и результатов. К интеллекту и мышлению это пока не очень относится, но как компоненты и кирпичики чего-то большего (см. нейросетевой конструктор) -- это очень нужно, важно, и на самом деле сделает компьютеры гораздо "умнее". Как роботы заменили людей на производстве, так и прорывные Deep Learning / AI технологии могут заменить (и уже заменяют) людей там, где раньше это не представлялось возможным.

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

Другая интересная смежная тема -- это нейроэволюция, что в данном контексте означает эволюцию (топологии) нейронной сети или генетическое программирование.

В общем, я сильно загрузился темой (спасибо блогу [livejournal.com profile] ailev), и собираюсь подтянуть свои знания в этой области. Попытка поставить опенсорсную библиотеку MXNet, чтобы покрутить какие-то примеры, сходу не прошла. Ребята знатные извращенцы: чтобы поставить системные библиотеки opencv они предлагают использовать... Ruby, который мне совсем не дался, из исходников я собрать все, не сразу (старый MacOS), но смог, но с R это пока не задружило (MXNet есть в версии для Питона, R и Julia -- из них R мне ближе). Через месяц буду в Штатах, куплю себе "The Master Algorithm", а то самая свежая книжка в этой области у меня из середины 90х, а с тех пор мир изменился неузнаваемо.
kaipa: (Default)
Почти год назад наколеночная нейронная сеть научилась играть в шахматы просто имея массив готовых игр. В опубликованной недавно статье (магистрская работа) описывается шахматная программа, использующая  нейронную сеть для оценки позиции и оптимизации перебора. По утверждению авторов программа играет в силу мастера.

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

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

Для начала, авторы поставили задачу оценки позиции при помощи нейронный сети. Они построили и натренировали сеть так, чтобы получить функцию оценки максимально близкую к известной функции оценки Stockfish (есть массив позиций оцененных Stockfish). А потом проверили на позициях из Strategic Test Suite. Натренированная нейронная сеть смогла оценивать позиции на уровне лучших шахматных программ, не имея практически никаких априорных знаний -- только опыт обучения!

Следующая логичная задача, которую поставили перед собой авторы -- это использовать нейронную сеть для предсказания лучшего хода. Здесь они использовали нестандартный, как мне кажется, подход для определения глубины поиска: отсечение по вероятности выиграть. То есть для каждой позиции вычисляется вероятность выигрыша, перебор идет в сторону позиций с более высокой вероятностью (или отсечение низких). Это дает преимущество при оценке длинных "вынужденных" комбинаций, когда в позиции не очень много ходов, но ее надо просмотреть глубоко. Нейронная сеть была натренирована для предсказания этих вероятностей. По сравнению с вариантом вычисления вероятностей "в лоб" (чисто через оценку позиций), нейронная сеть "угадывала" наилучший ход несколько чаще, то есть и в этом случае удалось повторить (в смысле результата) и превзойти закодированный алгоритм!

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

Это, конечно, не так круто, как "научиться играть" по партиям, но все равно впечатляет.
kaipa: (Default)
Прочитал интересную статью на хабре, в которой автор рассказыает, как он извлек классификатор из "чужой" нейронной сети, и встроил в свою собственную. Статья достаточно техническая, и для незнакомых с областью многие детали будут непонятны, но главное идея. Автор называет ее нейропластичностью, по аналогии с нейропластичностью нашего мозга, способного при необходимости соединять разные нейро-подсистемы новым образом.

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

Вроде бы идея не кажется сложной, но если заработает, то будет мета-системный переход в нейронных сетях. Уже сейчас полно библиотек для создания сети "на коленке". А при наличии готовых сетей-кубиков порог вхождения сниизится, нейронные сети станут не hi-tech технологией, а просто utility. Я впечатлен.
kaipa: (Default)
Продолжение серии статей на geektimes. (начало тут). Я ожидал одну заключительную статью, но уже появилось целых три, и обещают самую последнюю.

5. Каспаров против Deep Blue. Часть III: Междуматчье. (1996-1997).

6. Каспаров против Deep Blue. Часть IV: Нью-Йоркские тайны (1997)

7. Каспаров против Deep Junior. Возвращение в Нью-Йорк (2003)

Пятая (III) часть для меня была самой интересной, где опираясь на книгу "отца" Deep Blue рассказывается, как компьютер учили "мыслить" позиционно и стратегически.

Следующая часть -- это кульминация, исторический матч в Нью-Йорке. Каспаров, конечно, молодец. Он играл против компьютера очень и очень сильно, во всю силу используя позиционную, плохо просчитываемую игру, и мог выиграть матч, если бы не сломался психологически от нескольких "непонятных" и откровенно слабых ходов Deep Blue. Каспаров проиграл. Он хотел и мог бы выиграть матч-реванш, но IBM от реванша уклонилась, видимо, справедливо полагая, что выигрыш Каспарова обнулит маркетинговые приобретения.

Последняя на сегодня часть -- это матч уже не против суперкомпьютера, а против "обычной" четырехпроцессорной рабочей станции, на которой работала одна из лучших на тот момент шахматных программ Deep Juniour 8. В отличие от предыдущего матча, в этот раз Каспаров азартно играл в "обычные" шахматы, то есть так, как он играл бы с человеком. Только в последней партии матча он согласился на ничью, хотя с человеком бы продолжил играть до победы, понимая, что цена ошибки от усталости слишком высока, а компьютер не устает. Интересно, изменился бы результат, если бы Каспаров играл так же, как и в предыдущем Нью-Йоркском матче. Думаю да, так как глубина анализа Deep Juniour была заведомо меньше, чем у его куда более мощного предшественника.

В общем, в начале - первой половине нулевых, компьютерные программы на вполне компромиссном по сегодняшним меркам железе догнали по силе лучших гроссмейстеров. Мне кажется, что примерно с этого времени интерес к шахматам в мире стал плавно угасать. Увы.
kaipa: (Default)
На geektimes опубликована интересная серия статей про историю противостояния Каспарова и шахматных компьютеров. Заключительной статьи пока нет, но вдруг я пропущу и забуду.

1. Каспаров – Deep Thought. Игра в одни ворота (1989)

2. Первые обидчики. Fritz и Genius (1994-1995)

3. Каспаров против Deep Blue. Часть I: черный ящик (1996)

4. Каспаров против Deep Blue. Часть II: Филадельфийский эксперимент (1996)

В следующем матче в 1997г с усовершенствованным Deep Blue Каспаров проиграл (статья об этом, видимо, еще будет), но примерно до середины 2000х лучшие гроссмейстеры все еще сражались с компьютерами примерно на равных. Есть "закон Мура для шахмат", по которому считается, что удвоение вычислительной мощности вдвое увеличивает силу шахматной программы на 30 пунктов рейтинга Эло. Если учесть, что каждые полтора-два года производительность удваивается, то за 10 лет компьютеры "умнеют" минимум на 300 пунктов, что ОЧЕНЬ много. А если добавить к этому постоянное совершенствование алгоритмов, то понятно, что в шахматах у человека уже шансов нет. Лучшие шахматные программы на довольно скромных четырехпроцессорных компьютерах играют в силу 3300+, тогда как лучшие гроссмейстеры "всего лишь" 2800-2900.

Гроссмейстеры все еще могут что-то противопоставить шахмтаным программам только в середине партии, так как дебюты машина "знает" лучше, а для эндшпилей (5 и 6, а недавно и 7 фигур) рассчитали полные эндшпильные таблицы. Компьютеры не допускают тактических ошибок, и могут быть обыграны только стратегически. Но это еще надо уметь.

Впрочем, интересно было бы сравнить силу компьютеров и человека при равном энергопотреблении. Есть ощущение, что человек тут будет все еще впереди. С другой стороны, я играл или играю примерно в силу второго взрослого разряда (1700-1800). Шахматная программа в моем макбуке меня уже стабильно обыгрывает. Даже если я не допускаю явных ошибок и зевков, так как играю между делом. По-моему, дважды мне удалось сделать ничью. Оба раза позиционную (с повторением ходов).

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

(продолжение)
kaipa: (Default)
Некоторое время назад [livejournal.com profile] plakhov рассказал о любопытном эксперименте. Суть его в том, что программа с нейронной сетью, собранная на коленке, научилась играть в шахматы, даже не зная правил, а только обучившись на довольно большом количестве партий (100 миллионов). Единственное, что "знала" программа -- это функцию оценки позиции (довольно примитивную), и метод отсечения ветвей для уменьшения перебора. Это, конечно, круто. Очень круто и напоминает фантастику. Но гораздо круче, когда AI начинает сам взаимодействовать со средой, чтобы научиться. Это то, что в общем случае называется обучение с подкреплением или reinforcеment learning.

Оказывается, и здесь есть значительные успехи в последнее время. Гугл во всех смыслах недаром купил небольшую компанию DeepMind. Они занимаются разработкой искусственного интеллекта, который учится играть в компьютерные игры, те самые из домашних ПК 80х. От этого уже совсем недалеко до обучения взаимодействия со средой в общем случае.

Любопытно, что Илон Маск, основатель SpaceX и Tesla, инвестировал и в DeepMind и был хорошо знаком с тем, что они делают. Несколько недель назад он оставил комментарий к статье The Myth Of AI", который был довольно быстро удален, но сохранились копии. Маск предупреждает, что полноценный AI будет создан в ближайшие 5-10 лет.

Я посмотрел, что сейчас делает Джефф Хоукинс и его компания Numenta (Хоукинс -- автор On Intelligence). То же самое! Вот недавняя статья в их блоге "Learning Through Active Exploration". Естественно, они используют идею HTM, но движутся в том же направлении, что и DeepMind.

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

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

А кто-нибудь из френдов (кроме Плахова, про которого я знаю) причастен? Чем занимаетесь?
kaipa: (Default)
Классический пример, но мне понравилось.

Time flies like an arrow. Fruit flies like a banana.

Google Translate: Время летит, как стрела. Плодовые мушки, как банан.
Яндекс-Переводчик, то же самое: Время летит, как стрела. Плодовые мушки, как банан.
Переводчик MacOS, некоторые вариации и без запятых: Время летит как стрелка. Фруктовые мухи как банан.
Translate.ru, пытается поразить эрудицией: Время летит как стрела. Дрозофилы как банан.
Webtran.ru, добавили запятые, но мушка стала мухом: Время летит, как стрела. Дрозофил, как банан.

Все, сдаюсь.

Интересно, что разницу между time flies и fruit flies понимают все, хотя я могу представить летающий фрукт, но что like может быть и союзом и глаголом -- никто. Почему?

Еще пара экспериментов, Гугл:
Fruit flies to the basket: Плодовые мушки к корзине
Fruit flies into the basket: Фрукты летят в корзину

Ага, все же может, если захочет.

Яндекс на оба варианта выдал обреченно: Плодовые мушки в корзину.

Мне не удалось из переводчиков "выжать" вариант, где like бы использовался в качестве глагола. Почему все так грустно? Мне казалось, что машинный перевод сильно продвинулся за последнее время.
kaipa: (Default)
Продолжаю читать On Intelligence. Хоукинс рассказывает, как устроены уровни "обработки" сенсорных сигналов. То есть устроены они физически совершенно одинаково, а отличаются только тем, куда присоединены входы и выходы. Четыре уровня хитрым образом соединены в каскад с двунаправленными связями. На нижнем уровне воспринимаются и обрабатываются непосредственно сигналы с органов чувств. По мере продвижения по уровням "включаются" (распознаются образцы) понятия более высоких уровней, и в конце концов на верхнем уровне формируется образ, непосредственно воспринимаемый нашим сознанием. Это очень грубо, но детали несущественны. В этой связи мне вспомнились практики активного сознания, когда процесс восприятия сигналов пытаются сознательно контролировать, и воспринимать не готовый образ, а то, что на самом деле ощущают наши органы чувств. По сути это попытка, и если верить практикам -- успешная, контролировать этапы работы коры головного мозга на любом уровне. В таком ракурсе активное сознание кажется еще более удивительным.

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

У человека неокортекс развился до значительных размеров за ничтожные по эволюционным меркам два миллиона лет.
kaipa: (Default)
Какое-то время назад я написал коротенький пост "Об аналогиях", но на днях взглянул на это несколько с другой стороны. Все это примитивно до безобразия, но как-то раньше не задумывался.

Аналогия может быть обманчива для иллюстрации каких-то свойств объекта или следствий, так как отбрасывает другие свойства, которые могут быть существенными. Но аналогия отлично работает, чтобы показать, какими свойствами объект точно не обладает, или какие выводы точно не следует делать. Грубо говоря, аналогией надо пользоваться с осторожностью, чтобы иллюстрировать, что из А следует B. Но почти наверняка аналогией можно показать, что из А не следует C. Почему так?

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

А теперь пара примеров аналогий и загадка: Что иллюстрируют эти аналогии? (кто читал первоисточник -- тем будет не интересно).

1. Представьте, что на Земле произошла катастрофа, все живое уничтожено, все строения разрушены, атмосферу сдуло, органика быстро разложилась. Более-менее сохранились только дороги. Read more... )

2. Представьте, что ученым-исследователем конца XIX или начала XX века попал в руки современный компьютер или несколько, на которых установлены и работают какие-то программы, например, "Пасьянс" или "Тетрис", или "Цивилизация". Пусть это будет лаптоп на батарейках. Исследователи стали пытаться понять, как он работает.Read more... )
kaipa: (Default)
Просматривая историю проекта "Пионер" Михаила Ботивинника, обнаружил, что разработанные тогда идеи живы, и не просто живы, а активно развиваются под новым названием лингвистическая геометрия. По сути это метод в рамках теории игр, применимый для мульти-агентных дискретных игр с большим числом переборных вариантов. Метод ЛГ позволяет радикально сократить число вариантов, а в некоторых случаях даже найти оптимальную стратегию без перебора. Если Ботвинник свои идеи обкатывал прежде всего в шахматах, но разрабатывал приложения управления электроэнергетикой (он сам был энергетиком) и планирования народного хозяйства СССР, то попав с США вместе с ведущим математиком группы Ботвинника, эти идеи мигом обросли сугубо военной тематикой: бой роботов, управление ракетами, система ПРО и т.д, хотя есть и гражданские приложения, например, оптимальная траектория скорой. Судя по прочитанным мной материалам, исследования спонсировались DARPA и, вероятно, ЛГ реально применяется в боевых системах. Сразу вспомнился недавний Russian AI Cup, где такая технология была бы очень в тему.

Суть метода в том, что строится иерархия формальных языков (отсюда -- лингвистическая), описывающих состояние агентов и их возможные траектории (отсюда -- геометрия). Лингвистический аппарат оказался наиболее удобным для описания иерархических систем. Агенты тоже объединяются в иерархии, на каждом уровне иерархии свои локальные цели. Самое сложное, это построить иерархии и описать их на математическом языке (на языке формальных грамматик, насколько я понял). Все это математически обосновано, исследуются классы задач, где и каким образом такой подход применим, вычислительная сложность и т.д. Результаты революционные. По сравнению с прямым перебором сокращение в степенные порядки.

Это основное, что я понял из введения к книге Штильмана, которое доступно открыто на сайте автора, или в переводе на сайте какого-то энтузиаста из Харькова. По ЛГ Штильман читает курс в Денверском университете. На русском информации практически ноль.
kaipa: (Default)
Наверное, многие знают этот мысленный эксперимент, но я о нем прочитал впервые. В книге Хоукинса он описан более ярко, чем на википедии, поэтому я перескажу, следуя его изложению.

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

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

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

Если вы вдруг не знакомы с этим экспериментом, то в этом месте разумно задать вопрос: а что мы хотим продемонстрировать, собственно? а вот что )

Profile

kaipa: (Default)
kaipa

April 2017

S M T W T F S
       1
2345678
9101112131415
16171819202122
23242526272829
30      

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 21st, 2017 04:43 pm
Powered by Dreamwidth Studios