Тусовки модельеров мозга, суперкомпьютерщиков разного сорта, глубоких обучальщиков (программистов, математиков, артигогов --
http://ailev.livejournal.com/1011621.html) бурно обсуждают разные сравнения вычислительной мощности мозга и современного компьютера. Наброс на вентилятор в этой волне обсуждений был тут:
https://timdettmers.wordpress.com/2015/07/27/brain-vs-deep-learning-singularity/ (с выводом, что компьютерам до мозга ещё развиваться и развиваться), асимметричный ответ тут
https://www.reddit.com/r/MachineLearning/comments/3eriyg/the_brain_vs_deep_learning_part_i_computational/, а дальше пошли клочки по закоулочкам: начали вытаскивать и старинные работы типа
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3767911/ и экономические оценки типа
http://aiimpacts.org/costs-of-human-level-hardware/ (в этом материале см. внизу страницы related posts, и там много-много ссылок на другие работы).
Мои две копейки на останов вентилятора:
1. Сравнение никому не нужно, важно это только с точки зрения пиара -- никаких выводов ни про сингулярность, ни про глупость компьютеров, ни про умность человека из этого сравнения сделать нельзя.
2. В нейронных сетках их целевая работа быстра, эффективна и требует очень мало памяти. Проблема не в работе, проблема в научении. Скажем, человека нужно учить 15 лет в школе и высшей школе. Зато после этого он легко решит какую-нибудь математическую задачку за день. Оценивать нужно не этот день, оценивать нужно те 15 лет, в них вся фишка. 365*15=5475, легко нашли дырку в три с полтиной порядка в оценках производительности. С нейронными сетками то же самое: при нанесении пользы они в тысячу раз быстрей, чем при обучении. FLOPS при этом не волнуют: не все архитектуры позволяют хорошо задействовать эти FLOPS -- архитектуры графических GPU тут не слишком хороши, а мозг тоже никто не проверял, насколько он в этом плане хорош.
3. Как говорил кот Матроскин, средства у нас есть, у нас ума не хватает -- важно, как распорядиться имеющимися FLOPS. То, что в изменениях алгоритмов можно легко найти ещё три порядка, это даже не вопрос. То, что эти самые FLOPS можно аппаратно развернуть в поддержку правильных алгоритмов, это тоже не вопрос. Более того, FLOPS бывают разные -- в сетках необязательна двойная точность, а какой именно минимальной должна быть одинарная точность мы ещё не знаем, и аппаратуру под это ещё толком не подстраивали, идут только первые эксперименты. Более того, эксперименты с аппаратурой "сделаем как в мозге" -- это неправильные эксперименты, это эксперименты с махолётами вместо экспериментов с самолётами или вертолётами.
4. Так что сравнивают бегемотов с апельсинами, удивляются такому разнообразию оценок в наш век точных измерений и научных расчётов. Пустое это. С другой стороны, есть нюх -- этот нюх показывает, что текущей аппаратной базы уже начинает хватать для решения ну очень крутых задач. Если суперкомпьютеры грузануть нейронной сеткой, а не моделированием атомных взрывов, их можно ой сколько чему интересному научить уже сегодня -- если сообразить, чему учить и как учить. Впрочем, Гугль и Фейсбук делают примерно это, только на кластерах с GPU, тоже интересно получается.
5. Скорость, конечно, является на сегодня сдерживающим фактором: лимитирует тут скорость обучения, оно сегодня запредельно медленное, а массово-параллельные алгоритмы только-только начинают предлагаться.
6. Но и скорость тут не главное: из одной и той же мокрой нейронной сетки (ага, wetware) можно научить Нобелевского лауреата, а можно (если учить будут звери) Маугли -- при этом даже не получится научить говорить, несмотря на всю предрасположенность человечьего мозга к речи. Вот это и есть лимитирующий фактор: нет наборов учебных данных, нет постановки учебных задач, нет понимания, как учить сетку, нет понимания, как комплексировать разное выученное, чтобы добиться универсализма. Тезис Lenat, что при решении большинства интересных задач задействуется неожиданно большое количество знаний common sence, и что по пути Eurisko (даже если ей выдать современный суперкомпьютер) быстро не продвинешься -- этот тезис остаётся верен до сих пор.
7. Хотя я всё думаю, что было бы, если бы взять Eurisko (1982-83) и реализовать её на GTX Titan X -- мне кажется, могло получиться примерно то же, что с нейронными сетками, когда им дали достаточно аппаратных ресурсов: результаты могли бы быть сногсшибающими. Можно было бы сделать "исторический" хакатон -- и тряхнуть той идеологической стариной на новый технологический лад. Learning by discovery может оказаться не такой плохой идеей на современных вычислительных ресурсах. Скорость и размер (памяти) таки имеют значение. Хотя NP-полные задачи и требуют себе экспоненциального роста вычислительных ресурсов, но именно такой рост нам и обеспечивал закон Мура некоторое время. И слишком высоко на экспоненте висящие в 1983 году плоды могут оказаться низко висящими в 2015 (а высоко висящими -- плоды, которые в 1983 году вообще не были видны). За время пути собачка смогла подрасти.
8. Моя оценка (и я её обсудил с разными людьми) -- что мощности сегодняшних 2000 GTX Titan X (это примерно $2млн., не бог весть какой суперкомпьютер) при понимании как ими пользоваться должно хватить для создания реально неглупого компьютерного собеседника (врача, юриста -- это "например"), причём за год. Не хватает сейчас главного: понимания, как такой вычислительной мощностью правильно пользоваться, как модуляризовать результирующую систему (например, как сочетать "жёсткую логику" и "интуицию и аналогии" -- в реальной работе они обе ведь участвуют), как поставить задачу на обучение и где брать для него данные, как тестировать результат. Вот это понимание и может легко растянуться до момента получения приемлемых результатов и на пять лет, и на десять. Плюс за эти пять или десять лет легко может измениться само понятие "приемлемых результатов".
9. Сегодняшняя ситуация такова, что довольно быстро выстраивается новый технологический стек, ряд новых технологических платформ. Нижние уровни (FPGA, GPU от NVIDIA, что-то от AMD, многоядерные процессоры от INTEL), языки (python, lua, c++, новички типа Julia -- языков тут уже хватает, как и везде), спецбиблиотеки (Theano, Caffe, Torch -- их десятки уже, если не сотни) -- и специфика предметной области сидит ровно тут: все настройки и оптимизации из прикладных задач постепенно уползут в эти библиотеки-фреймворки, которые станут скоро толстыми "платформами". Это важно, ибо если мы тут ускорим дело всего на порядок, то стартап чему-то научит свою сетку не за десять лет, а за год за ту же сумму денег. Ну, или за тот же год, но возьмёт на аппаратуру вдесятеро больше денег (если будет знать, как распараллелить это обучение, что тоже не факт).
10. Приложения -- и вот тут, где уже ближе всего к деньгам, тут у нас пока затык. Распознавание речи и аннотация фотографий это хорошо, но именно в области приложений должен произойти прорыв. С переводом с языка на язык (аннотация фотографий, кстати, частный случай перевода -- перевод с видеоязыка на какой-то естественный язык, всё то же самое) уже справляются не хуже, а даже лучше чем при традиционных иерархических парсерах --
https://drive.google.com/file/d/0B16RwCMQqrtdNUptOGtDeDhxZ0E/view, на бирже уже вовсю торгуют с техническим анализом (и пытаются прицепить фундаментальный анализ, хотя бы по открытым источникам), автомобили без водителя -- это про то же самое. Приложений уже тьма, но главные приложения наверняка не придумали ещё. Чемоданы с колёсиками придумали только в 80-х, до этого были только носильщики с тележками. И сложность ещё в том, что мало придумать приложение. Потом это приложение нужно будет научить -- а как его учить? Где брать данные для обучения? Вот это самое сложное. Следовательно, нужно будет как-то предобучать на том, где много данных, а потом доучивать на буквально единичных примерах -- и исправлять потом ошибки как у человека, который тоже на единичных примерах учится, и тоже попервОй учится плохо.
Итого:
-- плевать, сколько мощности у мозга и какой КПД полёта у птички. Нам мощности аппаратуры и сегодняшних алгоритмов уже хватает, чтобы низенько-низенько, но полететь.
-- приложения, как всегда в софте, важнее всего. Способ получения приложений -- не столько кодирование, сколько не-пойми-что на сегодня, артигогика (
http://ailev.livejournal.com/1011621.html). Артигоги или как они иногда себя называют, коннекционисты, это то, что становится выше по технологическому стеку, чем программисты. Программисты становятся продолжением аппаратуры, они кодируют общие алгоритмы вместе с математиками, а ближе к пользователям будут уже -- не они, их ручной труд, их ручное кодирование там уже не нужно.
-- технологический стек, где сидят программисты и математики, важен: он может дать (возвращаясь к теме поста) тот порядок или даже пару порядков (а иногда и три порядка) запаса вычислительной мощности, которые позволят обучать приложение на тот самый порядок ли даже три порядка быстрее или качественнее (на выбор), и тем самым побеждать конкурентов. Но главный вывод: технологический стек уже достаточно развит (например, сегодняшняя самая большая наученная сетка -- 160млрд параметров,
http://arxiv.org/abs/1506.02338), чтобы (повторюсь) низенько-низенько, но полететь.
А учёные, которые изучают мозг, моделируют мозг, сравнивают мозг с компьютерными чипами -- они учёные, пусть статьи пишут. Сравнивают 160млрд. параметров из самой большой наученной людьми нейросетки с 86млрд.нейронов мозга (
http://compulenta.computerra.ru/archive/neuroscience/664455/). Это поможет, например, медикам. Примерно так же, как изучение аэродинамики птичек помогает орнитологам. А авиационщикам помогает изучение аэродинамики не птичек, а их самолётов. Так и создателям нейроприложений поможет не изучение устройства мозга и восхищение его вычислительными возможностями, а изобретение каких-то не связанных с мозгом алгоритмов и улучшение аппаратуры и языков программирования. Бионика хороша для отдельных примеров, она даёт нужную экзотику для научпопа. Бионика для массовой инженерии в больших дозах вредна, она отвлекает.