Глубокое обучение: читал Нандо де Фрейтаса, много думал

Jan 10, 2016 00:40

Nando de Freitas дал феерические ответы на вопросы завсегдатаев Reddit -- https://www.reddit.com/r/MachineLearning/comments/3y4zai/ama_nando_de_freitas/. Ныне 45-летний профессор Оксфорда (а заодно сотрудник DeepMind), он закончил Trinity College в Кембридже, но перед этим поучился в южноафриканском университете, где и познакомился с нейронными сетями. Родился в Зимбабве, был беженцем мозамбикской войны в раннем детстве, подростком решал задачки по математике, торгуя пивом в южноафриканском супермаркете. Задачки он брал из рекомендованного им учебничка Erwin Rreyszig "Advanced Engineering Mathematics" http://www.amazon.com/Advanced-Engineering-Mathematics-Erwin-Kreyszig/dp/0470458364 (да, 10е издание есть на thepiratebay.org).

В ответах Нандо бездна любопытнейших комментариев по поводу deep learning и его перспектив. Пока читал, набралось некоторое количество ссылок -- приведу их тут, чтобы не потерять:

Люди нахваливают его видеокурс по машинному обучению (16 видеолекций 2014-2015): https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearning/

У Нандо основной упор на архитектуру самой модели (а нужный алгоритм он считает, эта модель потом выучит как-нибудь -- недаром он напирает на reinforcement learning). Он считает, что нейронная сетка вполне себе тьюринг-полна, она и будет программировать и исполнять программы. Никаких логических ускорителей сбоку, всё прямо в сетке будет происходить. Все его последние работы про это:
-- Neural Programmer-Interpreters: http://arxiv.org/abs/1511.06279, сетка для представления и вычисления программ. Особенность от предыдущих работ, так это отличная генерализация (хотя и не абсолютная, как в символических методах -- но при выучивании сортировки в двадцать чисел затыкается не на третьем десятке, а аж на пятом). Хитрость в том, что там в архитектуре три разных компоненты: задаченезависимое рекуррентное ядро, key-value программная память и предметно-зависимые кодировщики. Нандо всё время подчёркивает, что в модели (самой нейронной сети) трудно провести границу между данными и алгоритмами -- с одной стороны, сеть это всего навсего набор параметров, а алгоритм трудится над этими параметрами, а с другой стороны в этих параметрах закодированы алгоритмы: и что там делается собственно алгоритмом сети, а что алгоритмом в сети это не так уж и важно где. Чем-то это рассуждение напоминает про многоуровневость вычислений и данных в традиционных компьютерах (микропрограммы процессора и внутрипроцессорные регистры, машинны и регистры процессора, данные и программы виртуальной машины языка и т.д.). Но главное, что For me there are two types of generalisation, which I will refer to as Symbolic and Connectionist generalisation. If we teach a machine to sort sequences of numbers of up to length 10 or 100, we should expect them to sort sequences of length 1000 say. Obviously symbolic approaches have no problem with this form of generalisation, but neural nets do poorly. On the other hand, neural nets are very good at generalising from data (such as images), but symbolic approaches do poorly here. One of the holy grails is to build machines that are capable of both symbolic and connectionist generalisation. NPI is a very early step toward this. NPI can do symbolic operations such as sorting and addition, but it can also plan by taking images as input and it's able to generalise the plans to different images (e.g. in the NPI car example http://www-personal.umich.edu/~reedscot/iclr_project.html, the cars are test set cars not seen before). Хотя он тут же признаёт, что алгоритмы быстрой сортировки по этой линии не получить, нужно придумывать что-то ещё.
-- для него самое главное достижение в Dueling Network Architectures for Deep Reinforcement Learning http://arxiv.org/abs/1511.06581 (там был огромный прорыв в задаче обучения для Atari-игр) это то, что модель поменялась, а алгоритмы остались по сути те же -- изменение архитектурное, а не алгоритмическое. Ибо one can either construct networks or play with equations to achieve similar goals. До сих пор архитектуры были "многоуровневая сетка" без особых изысков и самые разные алгоритмы reinforcement learning, самые разные формулы вычислений, а тут появилось что-то новое -- специализированные блоки сетки, которые учатся под одним алгоритмом разному и дальше устраивают между собой дуэль за право выдать решение.

А дальше интересное: поскольку самое главное будет происходить не в вычислениях над сеткой, а вычислениями в сетке, то сама сетка может быть устроена попроще -- и желательно устроить её вообще аппаратно, в оптике! Вот примеры аппаратных оптических вычислений:
-- DCDL: A structured Efficient Linear Layer -- http://arxiv.org/abs/1511.05946, который хорош не столько тем, что там число параметров традиционного линейного (все-со-всеми) слоя в нейронных сетках ужимается вшестеро (на ImageNet примере по сравнению с Caffe реализацией), но что есть шанс реализовать его оптически!
-- Towards Trainable Media: Using Waves for Neural Network-Style Training -- http://arxiv.org/abs/1510.03776, In this paper we study the concept of using the interaction between waves and a trainable medium in order to construct a matrix-vector multiplier. In particular we study such a device in the context of the backpropagation algorithm, which is commonly used for training neural networks.
-- Random Projections through multiple optical scattering: Approximating kernels at the speed of light -- http://arxiv.org/abs/1510.06664. Это не нейронные сетки, но kernel trick в SVM, и там уже есть стартап LightOn (http://phys.org/wire-news/209453189/an-ultrafast-and-low-energy-consumption-optical-co-processor-fo.html, http://lightOn.io -- и там фантастический слоган: Harvesting Computation from Nature). Это труды "смежников" из направления обработки сигналов compressive sensing -- они там для начала отправляют в игнор Найквиста-Котельникова, говоря, что незачем квантовать так обильно, если потом сигнал всё одно приходится сжимать. Дальше много-много математики и разные чудеса вычислительной оптики/радиолокации/аудиообработки: http://dsp.rice.edu/cs -- вот тут разные ссылки на предметную область, вот тут блог с новостями: http://nuit-blanche.blogspot.ru/. Интересно, что в самой этой предметной области deep learning вовсю используется: это ж универсальный аппроксиматор.

По Нандо де Фрейтасу архитектура сеток должна вообще подбираться-программироваться, и заниматься этим должна байесовская оптимизация (AutoML у него насквозь байесовский). Но и тут хинт: посколько сетка универсальна, то вся байесовщина реализуется не "над ней", а "в ней" -- одна сетка будет строить другую, ибо будет этому выучена -- Bayesian updating, Bayesian filtering and other forms of computation can be approximated by the type of networks we use these days. A new way of thinking is in the air. То есть программа слияния Bayesian reasoning и deep learning (например, тут http://blog.shakirm.com/2015/10/bayesian-reasoning-and-deep-learning/ и тут http://mlg.eng.cam.ac.uk/yarin/blog_5058.html) по мнению Нандо будет реализовываться без особого пиетета ко всему байесовскому, просто в нейронные сетки возьмут всё полезное оттуда.

Интереснейшие замечания про word embeddings ровно вдоль этой линии рассуждений (сетка мощна, всё будет в ней) дал приглашённый Нандо де Фрейтасом в чат Ed Grefenstette (http://egrefen.com/news.html, он активно работает с лингвистикой -- вот тут его свежие результаты: http://arxiv.org/find/cs/1/au:+Grefenstette_E/0/1/0/all/0/1). Тут нужно заметить, что в ответе он главным образом адресует "заранее выученные" word embeddings, которыми завалена Сеть:
-- самые разные подходы к word embeddings по сути are effectively equivalent in performance and representational power, up to the correct choice of hyperparameters. Вот тут многочисленные ссылки по embeddings, подтверждающие эту одинаковость, включая дополнительное замечание, что для их построения никакой глубокой сетки не нужно, хватает мелкой сетки: http://gavagai.se/blog/2015/09/30/a-brief-history-of-word-embeddings/. И ещё https://levyomer.wordpress.com/2015/03/30/improving-distributional-similarity-with-lessons-learned-from-word-embeddings/ и https://levyomer.wordpress.com/2014/09/10/neural-word-embeddings-as-implicit-matrix-factorization/ (и там ещё много -- https://levyomer.wordpress.com/category/word-embeddings/). Хе-хе, не могу не заметить, что matrix factorization любимая тема для compressive sensing -- https://sites.google.com/site/igorcarron2/matrixfactorizations и оттуда прямой ход на вычислительную оптику! Хотя в этом пункте про word embeddings это явно оффтоп.
-- word embeddings ... in no way a good general representation of semantics, but rather just one very successful example of an application transfer learning between contextual prediction (word given context, or context given word) and other domains with very different objectives (sentiment analysis, language modelling, question answering), either by serving as representations in their own right, or as initial settings to aid training.
-- эмпирическое возражение: если данных достаточно, то ничего заранее выученного не нужно. Более того, если вам нужно будет развести значения "тачка" и "автомобиль" для сленга и официальной речи, то прихват заранее выученных word embeddings будет даже лишним, и лучше бы для этого учить модель языка заново.
-- концептуальное возражение: для RNN embedding matrix это часть самой сетки! ... embeddings are just weights of a linear transform from the one-hot input into vectors used by the network's internal dynamics. Meaning and interpretation, if there is such things, are present in the state of the network, rather than solely in the embeddings, and it makes as much sense to seek to interpret the weights that constitute embeddings as it does to seek to interpret any other weight in the network. Pre-training embeddings and using them in another network, under this view, is even more explicitly just a form of transfer learning, in that we are initialising the weights of part of a task-specific network, and perhaps freezing them, with information obtained from another task. It's not a bad strategy, but I think people focus too much on this very specific form of transfer learning rather than, more generally, on other options there are out there (or yet to be discovered) to help us deal with data paucity, and to best share information across similar tasks. Вот! Meaning and interpretation -- Эд различает "значение и смысл" и напирает на то, что нужно работать и со значением/знанием (переносимым из других ситуаций опытом), и со смыслом (transactional information -- имеющей смысл только в контексте конкретного действия). Для меня это различение всегда было важно, и теперь понятно, какая группа в deep learning с этим работает -- купленные в состав DeepMind люди из http://www.darkbluelabs.com/ -- они там все из Оксфорда.

Там ещё много всякого разного интересного в этом чатике с Нандо де Фрейтасом, например, указание на людей, которые двигают математику deep learning, проясняя почему это всё вообще работает: Andrew Saxe (http://www.people.fas.harvard.edu/~asaxe/) и Surya Ganguli (https://ganguli-gang.stanford.edu/pubs.html). Или замечание, что ключевое для прогресса в AI это simulation -- полностью совпадает с моим мнением, что учебные наборы данных нужно не искать в природе (как в диких племенах учат деток, используя окружающий мир как учебное пособие), а изготавливать/generate/simulate (как в культурных обществах: учат в школах на специально подобранных учебных примерах и учебном оборудовании -- curriculum learning).

State-of-the art в machine intelligence меняется каждые пару месяцев, и существенно. Уже после нового года много чего появилось. Например, Multi-Way, Multilingual Neural Machine Translation with a Shared Attention Mechanism http://arxiv.org/abs/1601.01073, где все переводы делаются одной сеткой, но число параметров растёт линейно с числом языков. Но главное даже не это. Главное то, что proposed model significantly improves the translation quality of
low-resource language pairs, и это не единственный результат, где многоязычный перевод даёт рост BLEU -- вот тоже свеженькое: http://arxiv.org/abs/1601.00710. Пространство значений там 620-мерное, текущий стандарт. Кстати, большая размерность тоже не всегда хороша оказывается -- об этом тоже посленовогодний результат http://arxiv.org/abs/1601.00893. Вспоминается John Sowa, который не устаёт повторять, что онтологии для того, чтобы они были полезны, должны быть сильно недоопределены. У меня тут онтологический вопрос: если уж и брать это "пространство значений" (и оно же, вероятно, пространство смыслов), то какой оно размерности? Если речь идёт не о людях и человечьем языке -- то можно ли поднять "разрешающую способность" этого пространства, сделав шаг к большей формализации/дискретности/разрешению представления мира? Не даст ли это возможность "лучше думать" (если думает не человек)? А главное (учитывая замечание о недоопределённости как принципиально важной вещи) -- нужно ли это делать? Скорее всего, нужно будет уметь и увеличивать, и уменьшать размерность этого пространства для разных задач. Как это делать -- отдельный интересный вопрос, который появится после ответа на вопрос "когда и для чего".

Опять же, если там применят ход из http://arxiv.org/abs/1512.02433 (Minimum Risk Training for Neural Machine Translation -- это появилось только 8 декабря 2015 в Сети, поэтому вряд ли было известно на момент подготовки публикации), как вырастет качество? Ибо весь этот мультиязычный перевод вроде как сравнивается со state-of-the-art уровнем, но за месяц этот state-of-the-art уехал!

Автономный переводчик-коробочка ili (first wearable translator -- английский, японский, китайский в оффлайне, без связи с интернетом!) уже выходит на рынок: http://www.iamili.com/. Я считаю, что это такое пижонство, функциональность этого устройства (как десятка автономных других гаджетов до этого) быстро-быстро поглотится смартфоном. А пока устройство взяло Innovation Awards 2016. И да, for travel purposes, ili outperforms all existing translation engines.

Но это ерунда по сравнению с переводчиком с видео в речь (для слепых), который уже прототипируется в Baidu: Andrew Ng hands me a tiny device that wraps around my ear and connects to a smartphone via a small cable. It looks like a throwback-a smartphone earpiece without a Bluetooth connection. But it’s really a glimpse of the future. In a way, this tiny device allows the blind to see. Ng is the chief scientist at Chinese tech giant Baidu, and this is one of the company’s latest prototypes. It’s called DuLight. The device contains a tiny camera that captures whatever is in front of you-a person’s face, a street sign, a package of food-and sends the images to an app on your smartphone. The app analyzes the images, determines what they depict, and generates an audio description that’s heard through to your earpiece. If you can’t see, you can at least get an idea of what’s in front of you. -- -- http://www.wired.com/2016/01/2015-was-the-year-ai-finally-entered-the-everyday-world/

Advanced Driver Assistance Systems (ADAS) -- сделали Brain4Cars, в которой на базе LSTM предсказывают манёвр за 3.5 секунды до него (with a precision and recall of 90.5% and 87.4% respectively по прилагаемому набору данных с 1180 милями вождения)! Вот: http://arxiv.org/abs/1601.00740. Это тоже свежее, 5 января 2016. Хинт в том, что наблюдают не только за дорогой, но и за водителем!

Вот эта штука тоже интересна: http://arxiv.org/abs/1601.00917 -- DrMAD, оптимизация гиперараметров. Experiments on MNIST dataset show that DrMAD reduces memory consumption by 4 orders of magnitude for optimizing hyperparameters without sacrificing its effectiveness. To the best of our knowledge, DrMAD is the first research attempt to automatically tune hundreds of thousands of hyperparameters of deep neural networks in practice. Никакого змеиного масла, Autodiff просто необязательно обеспечивать строгость в обратном проходе! Нужно этот обратный проход по сравнению с прямым аппроксимировать! Таких инициатив несколько, алгоритмическая борьба за скорость идёт полным ходом. Вот, например, ускоритель для CNN: https://github.com/dmlc/mxnet/tree/master/tools/accnn

Трюк Karpathy с посимвольным порождением текста продолжает эксплуатироваться: теперь его применили, чтобы генерировать уровни Mario -- и неудивительно, что они выглядят как тщательно спроектированные человеком и так же играбельны: https://medium.com/@ageitgey/machine-learning-is-fun-part-2-a26a10b68df3#.dzza78ul1

Подборочка свежих работ по attention от Denny Britz: http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/. Не сомневаюсь, что через полгода там нужно будет всё переписывать, жизнь убежит далеко-далеко.

Идёт популяризация захода Сristopher Olah на differential functional programming (http://colah.github.io/posts/2015-09-NN-Types-FP/). Развитие идеи в http://edge.org/response-detail/26794, где поминается работа Ed Grefenstette сотоварищи http://arxiv.org/abs/1506.02516 -- он там на нейронной сетке реализовал continuously differentiable analogues of traditional data structures such as Stacks, Queues, and DeQues. Далее говорится, что так потихонечку наберут дифференцируемые аналоги и всякого остального, потребного для полноценного функционального программирования -- и новая парадигма у нас в кармане.

На закуску -- "вечнозелёный" материал, краткий пересказ лекции Yoshua Bengio на летней школе по deep learning в Монреале, 2015. Deep Learning: Theoretical Motivations": http://rinuboney.github.io/2015/10/18/theoretical-motivations-deep-learning.html. Начинается там волшебно: Deep learning is a branch of machine learning algorithms based on learning multiple levels of representation. The multiple levels of representation corresponds to multiple levels of abstraction. This post explores the idea that if we can successfully learn multiple levels of representation then we can generalize well.
Previous post Next post
Up