Глубокие бутерброды

Представьте себе, что каким-то чудом из основных законов питания кто-то обнаружил, что мы можем приготовить все, что захотим, просто приготовив бутерброды из двух ингредиентов: хлеба и ветчины. Явление не проявляется, если мы просто складываем хлеб в одиночку. Большая стопка хлеба - это просто хлеб. Но предположим, что мы обнаруживаем, что при правильной процедуре приготовления достаточно большая последовательность хлеба + ветчины + хлеба + ветчины + и т. Д. Может превратиться в куриный суп, лазанью или икру - или продукты, которые ни один шеф-повар никогда не думал создавать.

Если этот пример кажется неправдоподобным, хорошо! Большинство исследователей ИИ тоже не ожидали этого. Но начиная примерно с 2012 года (или 2009 года (или 1980-х (или 1960-х (в зависимости от того, когда вы начинаете считать)))) в определенной области, сфокусированной на математике «как учиться на данных», был свой «невозможный бутерброд». момент. И с тех пор «продуктовые магазины» этого поля со всеми их разнообразными ингредиентами для различных конкретных целей начали опустошаться и менять форму под неуклонным маршем «универсальной ветчины». В самом прямом смысле это то, о чем идет речь в последнее время вокруг глубокого обучения.

Искусственные нейронные сети - наши бутерброды. Глубокие нейронные сети - это просто бутерброды с множеством слоев. Что считается «глубоким»? Это не имеет значения. Чтобы понять причину всей недавней шумихи вокруг глубокого обучения, нам действительно нужно понять (1) «ингредиенты» и (2) процедуру «приготовления».

Слои «хлеба» - это то, что математики называют линейными преобразованиями. Представьте себе пространство как эластичный лист миллиметровой бумаги с линиями сетки на нем. Примером хлеба является любой способ возиться с пространством, когда вещи, которые были строками до этого, остаются строками после. Итак, вращения - хлеб, потому что любая линия остается линией, когда мы вращаем пространство. Растягивать пространство, делая все в два раза больше (или вдвое меньше и т. Д.) - еще один вид хлеба. Мы также могли бы захватить две стороны пространства и переместить левую руку вниз, а правую - вверх, чтобы вертикальные линии оставались вертикальными, а горизонтальные линии наклонялись, а маленькие квадраты сетки превращались в параллелограммы. Это называется стрижкой, и это тоже своего рода хлеб. Это почти весь хлеб. И если мы сложим кучу таких вещей одну за другой, тогда, поскольку каждый кусок хлеба хранит строки как строки, весь стек также будет содержать строки как строки.

Итак, стопка хлеба - это не бутерброд. Просто складывая хлеб сам по себе, мы ничего не добьемся [1–3]. Итак, что такое «ветчина»?

Оказывается, ветчина может быть чем угодно. Важная часть состоит в том, что это какой-то шаг, который изгибает линии сетки и делает их больше не линиями. Итак, случайно выбранный сэндвич будет вращать / масштабировать / сдвигать пространство, а затем изгибать некоторые линии сетки, а затем снова вращать / масштабировать / сдвигать, а затем изгибать еще несколько линий сетки. Если мы сделаем бутерброд достаточно «глубоким», мы сможем представить, что исходное пространство может немного искривляться и складываться самим собой [4–5].

Что еще не ясно, так это то, как мы должны добиться чего-либо со всем этим.

Глубокие нейронные сети в реальном мире

Проблема практического использования сводится к процессу приготовления.

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

Это дает нам новый способ взаимодействия с компьютерами - метод, который часто называют «программным обеспечением 2.0» [6]. С программным обеспечением 2.0 вы как будто не знаете, как приготовить лазанью, но у вас есть несколько старых лазаньи, и у вас есть волшебная печь - та, которая позволяет вам просто положить в следующий большой (т.е. «глубокий») бутерброд с ветчиной. к пучку лазаньи, затем подождите немного, и вуаля! ... это лазанья. Вы только что «приготовили» лазанью? Вроде - непонятно. Ясно одно: теперь у вас есть еще одна лазанья, и вам не нужно знать, как ее готовить.

Для вычислений в целом это означает, что теперь мы можем решать проблемы, которые не знаем. Мы можем писать программы, которые не умеем писать. Мягко говоря, это все меняет.

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

Принятие рынком глубоких нейронных сетей

Глубокое обучение уже внедрено рынком во всех отраслях, которые вы можете назвать, и его внедрение не показывает признаков замедления. В вашем телефоне есть глубокие сети для преобразования речи в текст и прослушивания ваших слов «Окей, Google» или «Привет, Siri». Существуют сети для обнаружения человеческих лиц в поле зрения камеры и настройки автофокуса в зависимости от их положения и местоположения. Они научились читать. Они стоят за такими системами, как Google Translate, который когда-то содержал огромные таблицы фраз и их возможных переводов для каждой пары языков. Они превзошли не только чемпионов мира по шахматам и го, но, что более впечатляюще (и реже подчеркивается), они превзошли 30 с лишним лет попытки лучших исследователей искусственного интеллекта разработать вручную закодированные "интеллектуальные" алгоритмы для игры в эти игры. использование предметно-ориентированных знаний - последние версии AlphaZero достигают сверхчеловеческой производительности не благодаря встроенным знаниям отдельных игр, а просто позволяя алгоритму играть против самого себя снова и снова, пока он не превзойдет как самых опытных людей, так и лучших. алгоритмы, которые придумали люди.

Даже в научных исследованиях начали падать непреодолимые ранее препятствия. Одна из самых фундаментальных проблем биохимии - это сворачивание белка. Этот вопрос является фундаментальным для открытия лекарств, поскольку функция белка в организме определяется его трехмерной формой. В декабре 2018 года компания Google DeepMind выпустила модель под названием AlphaFold [7–8]. Они обучили нейронную сеть предсказывать структуру белка по набору попарных расстояний между его остатками, и при этом им удалось намного опередить существующие методы, что привело к тому, что один ученый заметил, что, впервые услышав результаты, он почувствовал себя так же, как и он сам. другие ученые в его области были устаревшими [9–10].

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

Дальнейшее чтение

Хлеб
[1] 3Синий1Коричневый. Линейные преобразования и матрицы.
[2] 3Blue1Brown. Умножение матриц как композиция.
[3] 3Синий1Коричневый. Трехмерные линейные преобразования.

Ветчина
[4] DeepMind. Лекция по глубокому обучению 3. Основы нейронных сетей. (Соответствующий раздел начинается в 37:47).
[5] Montúfar, Pascanu, Cho, & Bengio (2014). О количестве линейных областей глубоких нейронных сетей.

Кулинария
[6] Андрей Карпатий. Программное обеспечение 2.0.

Результат
[7] Роберт Ф. Сервис. DeepMind от Google помогает сворачиванию белков.
[8] DeepMind. AlphaFold: использование ИИ для научных открытий.
[9] Сигал Самуэль. Как один ученый справился, когда ИИ победил его на работе всей его жизни.
[10] Мохаммед аль-Кураиши. "Что сейчас произошло?"