Разберись в Data Science — страница 15 из 19

Концептуализируйте глубокое обучение

«Появление искусственного интеллекта иногда называют новой промышленной революцией. И если глубокое обучение – это паровой двигатель этой революции, то данные – это уголь: топливо, питающее наши интеллектуальные машины, без которого ничего не было бы возможно»

– Франсуа Шолле, исследователь ИИ и автор книг[123]

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

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

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

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

Нейронные сети

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

Чем нейронные сети похожи на мозг?

Человеческий мозг – это сеть, состоящая из биологических нейронов. Считается, что эти нейроны «поглощают информацию» в виде химических сигналов и электрических импульсов. В определенный момент – мы не до конца понимаем, в какой именно – эта информация «активирует» нейрон, то есть заставляет его среагировать. Если вы ведете машину, и на дорогу внезапно выбегает олень, ваш мозг быстро обрабатывает входные данные (вашу скорость, расстояние до оленя, присутствие машин поблизости), активируя миллионы нейронов, которые, в свою очередь, принимают решение (нажать на тормоз или свернуть с дороги)[124].

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

Для ответа на этот вопрос и были созданы искусственные нейронные сети – вычислительный аналог биологических нейронных сетей.

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

Таким образом, несмотря на заявления СМИ и маркетологов, мы не должны обманываться, думая, будто последние достижения в области нейронных сетей и глубокого обучения отражают их более тесную связь с человеческим мозгом. Успех этих алгоритмов скорее обусловлен более быстрыми компьютерами, огромными объемами данных и множеством исследований, проводимых в области машинного обучения, статистики и математики.

Давайте рассмотрим принцип работы нейронных сетей на двух примерах.

Простая нейронная сеть

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

На рис. 12.1 представлены четыре входных параметра:

– Средний балл = 3,90

– Курс = 4

– Специализация = «Статистика» (закодирована с помощью цифры 2)

– Внеклассные занятия = 5 (общее количество внеклассных занятий)


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


Эти значения передаются в вычислительную единицу – нейрон, который представлен на рисунке в виде кружка. Внутри этого нейрона находится функция активации, которая преобразует четыре входных параметра в единое числовое значение. Если комбинация входных параметров превышает пороговое значение, нейрон «активируется» и предсказывает, что заявитель получит приглашение.

В качестве функции активации можно использовать разные функции в зависимости от решаемой задачи и имеющихся данных. Поскольку в этом примере мы решаем задачу классификации, то есть предсказываем, получит ли данный стажер приглашение, – наша функция активации должна предоставить нам значение вероятности получения приглашения, аналогично тому, как это делалось в главе 10 с помощью логистической регрессии[125].

В уравнениях 12.1 и 12.2 показана наиболее распространенная функция активации. Мы разбили ее на две части, чтобы ее было легче использовать (и набирать):


Вероятность приглашения =



где X = w1 × Средний балл + w2 × Курс + w3 × Специализация + w4 × Внекл. занятия + b. (12.2)


Мы надеемся, что эти уравнения уже кажутся вам знакомыми. Уравнение 12.1 – это логистическая функция из главы 10, а уравнение 12.2 – функция линейной регрессии, представленная в главе 9. Таким образом, с математической точки зрения нейронная сеть просто содержит компоненты машинного обучения и статистических алгоритмов. Уравнение линии линейной регрессии 12.2 позволяет объединить четыре входных параметра в один, а логистическая функция 12.1 «втискивает» результат в диапазон от 0 до 1, в котором должны находиться значения вероятности.

Цель сети, как и логистической регрессии, – найти наилучшие значения весов и постоянного члена (представленных в уравнении 12.2 буквами w и b соответственно и вместе называемых параметрами), которые делают выходные данные, прогнозируемые сетью, максимально близкими к фактическим выходным данным в совокупности[126]. Под «обучением» нейронной сети (как и в случае машинного обучения в целом) понимается процесс оптимизации параметров уравнений, подобных 12.2, для получения прогноза.

Как учится нейронная сеть

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

Эти начальные случайные веса неверны в том смысле, что они были установлены произвольно, а не определены в процессе обучения. Однако они позволяют с чего-то начать, а самое главное – получить числовой результат. Например, предположим, что вы берете данные двух выдающихся бывших стажеров, Уилла и Элли, и подаете их на вход нейронной сети (то есть подставляете в приведенные выше уравнения). Используя случайные параметры, мы получили результат 0,2 для Уилла и 0,3 для Элли. Другими словами, при использовании случайных значений весов и постоянных членов вероятность получения приглашения обоими претендентами оказалась низкой. Однако, поскольку это исторические обучающие данные, мы знаем, какими должны были быть выходные значения. И Уилл, и Элли получили приглашения. Истинные выходные значения в обоих случаях были равны 1, но модель предсказала низкие значения для каждого из стажеров. Итак, исходное качество предсказаний нейронной сети ужасно.

На этом этапе модель анализирует истинные значения выходных параметров (1 и 1) и отправляет сообщение о том, что текущие параметры неверны, и их необходимо скорректировать. Но как именно мы должны изменить каждый вес? Алгоритм, называемый обратным распространением ошибки[127], корректирует эти веса и решает, на сколько их необходимо увеличить или уменьшить. Может быть, придать большее значение среднему баллу? А может быть, стоит уменьшить важность курса? Затем процесс повторяется: обновленные веса снова применяются для оценки данных Уилла и Элли, и на этот раз выдаются результаты 0,4 и 0,6. Уже лучше, но еще не идеально. Алгоритм обратного распространения ошибки отправляет сигнал обратно по сети и снова корректирует веса, после чего процесс повторяется. Со временем параметры приближаются к своему гипотетическому оптимуму, при котором предсказанные значения в среднем наиболее близки к фактическим меткам[128].

Чуть более сложная нейронная сеть

В предыдущем примере мы просто взяли логистическую регрессию и превратили ее в визуализацию нейронной сети. Математика была идентичной. В связи с этим возникает вопрос: зачем вообще это делать? Зачем представлять логистическую регрессию в виде чего-то нового, называемого нейронной сетью?

Ответ на этот вопрос и реальная польза нейронных сетей заключается в том, что происходит, когда мы добавляем в сеть «скрытые» слои. Итак, давайте добавим в предыдущую сеть скрытый слой с тремя нейронами, каждый из которых содержит логистическую функцию активации. В результате мы получим сетевую структуру, показанную на рис. 12.2.


Рис. 12.2. Нейронная сеть со скрытым слоем. Средний слой «спрятан» между основным входным слоем слева и выходным слоем справа


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

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

Напомним, что четыре исходных входных параметра подаются на скрытый слой и выводятся в виде трех новых признаков. Затем признаки «достижения», «опыт» и «набор навыков» становятся входными данными для последнего нейрона, который берет взвешенную комбинацию этих входных данных, пропускает ее через еще одну функцию активации и выдает прогноз.

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

При этом получаются уравнения в уравнениях – математическое подобие матрешки. Вот как это может выглядеть.

«Внешняя» функция представляет собой функцию активации в последнем слое сети. Для сети, изображенной на рис. 12.2, это будет:

Вероятность приглашения =



Однако каждый из признаков в этом уравнении – достижения, опыт и набор навыков – представляют собой отдельные уравнения. Если мы заменим в приведенном выше уравнении только «Достижения», то получим (не пугайтесь):



И это если мы ограничимся только признаком «Достижения»! Мы не стали заменять остальные, но надеемся, что нам удалось проиллюстрировать высказанную ранее мысль о том, что нейронные сети представляют собой гигантские математические уравнения.

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

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

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

Что же такое глубокое обучение?

Применение глубокого обучения

Глубокое обучение – это семейство алгоритмов, использующих структуру искусственной нейронной сети с двумя или более скрытыми слоями. (Другими словами, это искусственная нейронная сеть с улучшенным брендингом.) Идея углубления (или расширения, как показано на рис. 12.3) нейронной сети состоит в последовательном наложении скрытых слоев, при котором выходные сигналы одного слоя становятся входными сигналами для следующего. В каждом слое реализуются новые абстракции и представления данных, в результате чего из набора входных данных создаются все более нюансированные признаки.

Это сложный процесс, который не всегда было легко осуществить. В 1989 году исследователи под руководством Янна ЛеКуна[130] создали модель глубокого обучения, которая принимала в качестве входных данных рукописные цифры и автоматически присваивала им соответствующую выходную числовую метку. Это было сделано для автоматического распознавания индексов на почтовых отправлениях.

Эта сеть содержала более 1200 нейронов и почти 10 000 параметров. (Только задумайтесь об этом. Модель в уравнении 12.2 содержит всего пять параметров.) Команде исследователей требовался обучающий набор данных, содержащий тысячи рукописных цифр с метками. Все это нужно было осуществить, используя технологии 1980-х годов.

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


Рис. 12.3. Глубокая нейронная сеть с двумя скрытыми слоями


Однако в 2010-х годах сочетание больших наборов данных (благодаря Интернету), усовершенствования алгоритмов (в частности, применения более эффективных по сравнению с логистическими функций активации) и компьютерного оборудования, известного как графические процессоры (GPU), произвело настоящую революцию в сфере глубокого обучения. Графические процессоры позволили сократить время обучения в сто раз[131]. Благодаря этому для изучения тысяч параметров глубокой нейронной сети требовались уже не недели или месяцы, а всего несколько часов или дней. С тех пор успехи в области глубокого обучения росли как снежный ком, особенно в том, что касалось таких неструктурированных данных, как текст, изображения и звук. Это проявилось в создании систем, позволяющих решать всевозможные задачи – от идентификации и маркировки лиц до преобразования аудио в текст.

Преимущества глубокого обучения

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

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

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

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


Рис. 12.4. Теоретическое сравнение динамики роста производительности традиционных алгоритмов регрессии и классификации и нейронных сетей разного масштаба по мере увеличения размера набора размеченных данных[132]


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

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

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

Как компьютеры «видят» изображения

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

На рис. 12.5 показано, как простое изображение в градациях серого – написанная от руки цифра – воспринимается компьютером[133]. Каждый пиксел изображения был преобразован в значение в диапазоне от 0 (белый цвет) до 255 (черный цвет), который включает все оттенки серого. На рис. 12.5 показано изображение размером 8 на 8 пикселов с низким разрешением, представленное в виде матрицы с 64 значениями в диапазоне от 0 до 255. Люди видят написанную от руки цифру слева, а компьютер – электронную таблицу с числами, показанную в середине.

Теперь представьте себе базу данных, включающую несколько тысяч примеров – рукописных цифр от 0 до 9, отличающихся стилем написания. Люди, включая детей, способны прочитать и распознать эти цифры без особых усилий. Но как компьютер может осуществить классификацию изображений?


Рис. 12.5. Здесь показано, как изображение в градациях серого «воспринимается» компьютером и как эти данные подаются на вход глубокой нейронной сети. Более темные оттенки в выходном слое указывают на наиболее вероятное предположение


Мы могли бы применить к этому набору данных алгоритм глубокого обучения, способный обучаться на тысячах рукописных цифр. Нейроны скрытого слоя могли бы «активироваться» в том случае, если, скажем, в цифре присутствовала петля (0, 6, 8 или 9), вертикальная (1, 4) или горизонтальная линия (2, 4, 7) или их комбинация.

Здесь мы снова схитрили, чтобы дать вам представление о том, что могут представлять нейроны. Однако, как уже говорилось, скрытые слои зачастую очень трудно интерпретировать, и они могут создавать представления, не имеющие непосредственно воспринимаемого смысла. Но концептуальная идея остается прежней. Внутренние нейроны действительно способны выявлять закономерности в написании цифр, но они имеют только математический, а не визуальный смысл.

Сверточные нейронные сети

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

Мы начнем с объяснения того, как компьютер «видит» цветное изображение. Каждый пиксел цветного цифрового изображения состоит из трех цветов – красного, зеленого и синего. Мы называем их цветовыми каналами. Красный канал содержит матрицу значений от 0 (красный отсутствует) до 255 (красный); то же самое касается зеленого и синего каналов. Таким образом, вместо одной матрицы чисел мы имеем три, как показано на рис. 12.6.


Рис. 12.6. Цветные изображения представлены в виде трехмерных матриц, содержащих значения пикселов красного, зеленого и синего цветов


Соответственно, 10-мегапиксельное изображение будет содержать 30 миллионов значений (значение красного, синего и зеленого цветов для каждого из 10 миллионов пикселов). И если эти 30 миллионов входных данных будут поданы на вход нейронной сети со скрытым слоем, состоящим из 1000 нейронов, то вашему компьютеру потребуется изучить целых 30 миллиардов весовых параметров[134]. Если у вас нет доступа к самому мощному в мире суперкомпьютеру (и даже если бы он у вас был), вам лучше придумать более эффективный способ решения этой задачи.

Исследователи и специалисты по глубокому обучению делают это с помощью процесса, называемого сверткой. Свертка – это математический аналог анализа изображения с помощью ряда увеличительных стекол, каждое из которых предназначено для разных целей. Перемещая увеличительное стекло по изображению слева направо и сверху вниз, вы заметите множество локальных паттернов: линий, углов, закругленных краев, текстур и так далее (рис. 12.7). Свертка осуществляет это математически, то есть выполняет вычисления с использованием локализованного набора значений пикселов, находя края (например, значения 0 рядом с большими значениями) и другие паттерны. Затем она «объединяет» их для нахождения наиболее выразительных отличительных черт, чтобы уменьшить количество участвующих в процессе чисел.


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


После обнаружения локальных паттернов (вроде горизонтальных или диагональных краев) с помощью свертки нейроны скрытого слоя начинают соединять важные края (в математическом смысле) и отфильтровывать информацию, не имеющую отношения к целевому выходу. При этом данные обрабатываются так, что сеть научается определять, есть ли на фотографии дети, а также находить различия в лицах. А в случае с беспилотными автомобилями – отличать припаркованные автомобили от движущихся, пешеходов от строителей, а знак «стоп» от знака «уступи дорогу».

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

Глубокое обучение для обработки языка и последовательностей

Глубокое обучение также способствовало прорывам в сфере обработки языка и последовательностей благодаря использованию структуры, называемой рекуррентной нейронной сетью. Как вы помните из предыдущей главы, традиционные методы анализа текста оказываются неэффективными по причине игнорирования порядка слов, которые просто помещаются в «мешок слов».

Но порядок слов имеет большое значение. Рассмотрим следующие два предложения со словом «апельсиновый». Можете ли вы предсказать последнее слово в каждом из них?


Рис. 12.8. Простое представление рекуррентной нейронной сети


1. За завтраком я люблю пить апельсиновый __________.

2. Мой двоюродный брат живет в калифорнийском «апельсиновом __________».


Вероятно, ваш мозг без промедления вставил пропущенные слова: «сок» и «округ». К тому моменту, когда вы достигли пропущенного слова в первом предложении, слова «завтрак» и «пить» уже находились в вашей кратковременной памяти. Очевидным ответом был «сок».

Во втором примере ваша память о «Калифорнии» и слова «живет в», скорее всего, натолкнули вас на мысль о калифорнийском «апельсиновом округе» (Ориндж Каунти). В обоих случаях ваш мозг удерживал уже известную ему информацию во время обработки новой. Рекуррентная нейронная сеть[135] – вычислительный эквивалент этого процесса.

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

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

Вы уже наверняка понимаете, как подобные алгоритмы глубокого обучения можно использовать для более быстрого сочинения ответов на письма и исправления грамматических ошибок прямо в процессе набора текста. Эта технология была реализована в функции «Smart Compose» сервиса Google Gmail в 2018 году; она предлагает текст, помогая вам заканчивать свои _________, и работает на основе рекуррентных нейронных сетей[136].

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

Глубокое обучение на практике

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

Есть ли у вас данные?

Какой бы захватывающей ни казалась технология глубокого обучения, вероятно, самую большую трудность для компаний представляет недостаток размеченных обучающих данных. Как говорилось в эпиграфе к этой главе, данные – это «топливо, питающее наши интеллектуальные машины, без которого ничего не было бы возможно». Тем не менее, как уже не раз было сказано, мы снова и снова видим, как многие компании торопятся приступить к глубокому обучению, не имея достаточного объема размеченных данных для решения стоящей перед ними специфической задачи.

Эксперт по глубокому обучению и ИИ Эндрю Ын сформулировал эту проблему так:[137]

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

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

Трансферное обучение, или как работать с небольшими наборами данных

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

Идея трансферного обучения заключается в загрузке модели, обученной распознавать такие повседневные объекты, как воздушные шары, кошки, собаки и так далее[138]. Это означает, что тысячи значений параметров в сети были оптимизированы для работы с группой изображений. Как вы помните, первые слои нейронных сетей, обученных на изображениях, изучают такие общие представления, как формы и линии. А последующие, более глубокие слои соединяют эти края и линии, формируя ожидаемое выходное изображение.

Суть трансферного обучения – выделить несколько последних слоев, которые изучают то, как линии и края образуют, например, изображения кошек и собак, и заменить их новыми слоями, которые в результате очередного раунда обучения становятся способны объединять эти формы в очертания опухолей на медицинских изображениях. Имейте в виду то, что трансферное обучение может уменьшить количество размеченных изображений в 10 раз, но оно не позволяет обойтись несколькими десятками.

Являются ли ваши данные структурированными?

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

Если при попытке построения модели контролируемого обучения на структурированном наборе данных ваши специалисты обращаются к глубокому обучению как к методу последней надежды, потому что «все остальное не сработало» – вас, скорее всего, постигнет разочарование.

При работе со структурированными данными глубокие нейронные сети часто проигрывают методам, основанным на использовании деревьев решений (см. главу 10). Без сомнения, существуют исключения, но если точность вашей модели на основе деревьев решений удручающе низкая, то вам лучше потратить время на устранение проблем в ваших данных и оценку принципиальной возможности решения поставленной задачи. (Помните, что наличие размеченных данных еще не гарантирует обнаружения связей между входными и выходными параметрами.) Залог эффективности глубокого обучения – существование отношений между входными и выходными данными. Однако данный метод не может сгенерировать нечто из ничего.

Качество и полнота ваших данных по-прежнему имеют значение.

Как будет выглядеть сеть?

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


– Сколько слоев должно быть в сети?

– Сколько нейронов должно быть в каждом слое?

– Какие функции активации следует использовать?


Мы не будем останавливаться на этих вопросах (им посвящено множество отличных книг – см. врезку). Просто отметим, что специалисты по работе с данными могут потратить несколько недель на эксперименты с этими параметрами и общей архитектурой сети. При построении большой сети старайтесь не допускать ее переобучения; в этом вам помогут уроки из глав 9 и 10.

Глубокое обучение для практиков

Если вы хотите научиться самостоятельно создавать модели глубокого обучения, мы настоятельно рекомендуем серию книг Франсуа Шолле, посвященных использованию библиотеки глубокого обучения Keras для языков R и Python.


• Шолле Ф. «Глубокое обучение на Python» (Издательство: Питер, 2018).

• Шолле Ф. и Аллер Дж. Дж. «Глубокое обучение на R». (Издательство: Питер, 2018).

Искусственный интеллект и вы

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

Тем не менее значительный прогресс был достигнут в области искусственного интеллекта узкого назначения (или слабого ИИ). Она охватывает компьютерные системы, которые хорошо справляются с какой-то одной задачей, например, с распознаванием лиц, переводом речи или обнаружением признаков мошенничества. Эффективность слабого ИИ обусловлена эффективностью машинного обучения. Можно сказать, что ИИ – это и есть машинное обучение. Говоря об ИИ, мы на самом деле говорим о машинном обучении. А если задача связана с обработкой перцептивных, неструктурированных данных, то речь идет о глубоком обучении. Машинное обучение – это подраздел ИИ, а глубокое обучение – подраздел машинного обучения (рис. 12.9).


Рис. 12.9. Глубокое обучение – это подраздел машинного обучения, которое является подразделом искусственного интеллекта


Некоторые люди используют термин ИИ более свободно, чем другие. Например, в обществе принято называть систему рекомендаций фильмов искусственным интеллектом, тогда как в ее основе лежит скорее машинное или статистическое обучение. Почему это важно? Дело в том, что понимание того, что создание «ИИ», о котором говорится в новостях, требует больших наборов данных, собранных у таких людей, как вы и я, ставит вопрос о качестве этих данных, изменчивости, возможной утечке, переобучении и множестве других практических проблем. ИИ усиливает закономерности, содержащиеся в данных, собранных в прошлом; речь не идет о создании чего-то напоминающего человеческое сознание.

Преимущества технологических гигантов

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

Помните, как много лет назад вы щелкали по своим фотографиям в социальных сетях? То же самое делали миллионы других людей, предоставляя этим платформам множество изображений (входных данных) с расположением лиц (выходных данных). Теперь благодаря глубокому обучению система способна нарисовать рамку вокруг вашего лица и отличить вас от вашего друга. А надоедливые капчи, предлагающие вам доказать, что вы человек, при посещении определенных сайтов («Выберите все изображения с пересечением улиц»), используются для глубокого обучения сетей, лежащих в основе работы систем беспилотных транспортных средств[139]. Возможно, вы решите воздержаться от поездок на беспилотном автомобиле до тех пор, пока веб-сайты не перестанут просить вас идентифицировать знаки «стоп» на изображениях.

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

Этический аспект глубокого обучения

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

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

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

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

Как мы уже говорили, основная причина критики глубокого обучения – огромная путаница с тем, что происходит за кулисами. Очень трудно объяснить гигантское математическое уравнение с миллионами параметров. Однако эти уравнения могут использоваться при вынесении приговора преступникам, лежать в основе работы функции безопасности на телефоне (вроде iPhone Face Scan компании Apple) или применяться системой вашего автомобиля для экстренного торможения или поворота, если на дороге появится олень.

Более того: зачастую то, что мы моделируем, – не просто точки данных, а конкретные люди. Различные аспекты их идентичности кодируются и снабжаются метками. Когда мы получаем данные, они могут не иметь для нас большого значения. Но если мы признаем тот факт, что объем данных растет быстрее, чем наша способность формулировать связанные с этим проблемы, нам не стоит предполагать, будто общество уже дало нам добро на их использование. То, что мы можем собирать определенные признаки и запускать алгоритмы, не всегда значит, что нам стоит это делать. И хотя мы предоставили вам инструменты для понимания хорошо сконструированных приложений глубокого обучения, вам не следует предполагать, что в каждом приложении это сделано правильно. Даже в своей организации стоит скептически относиться к заявлениям о том, что глубокое обучение решает проблемы. Попросите не просто показать вам данные и алгоритмы, но и спросите, кого именно затрагивает полученный результат, а затем решите, насколько вас это устраивает.

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

Подведение итогов

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

Глубокое обучение – это захватывающая новая глава в машинном обучении. Запуск все более сложных моделей с каждым днем становится все проще и дешевле. Тем не менее, несмотря на потенциал глубокого обучения, нам не следует возлагать на него слишком большие надежды. Данная технология позволяет эффективно решать такие задачи восприятия, как классификация изображений и текстов, состоящих из высококачественных и правильно размеченных данных, но не всегда оказывается оптимальным вариантом для решения небольших задач, предполагающих работу со структурированными данными.

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

Часть IV