«апельсиновом __________».
Вероятно, ваш мозг без промедления вставил пропущенные слова: «сок» и «округ». К тому моменту, когда вы достигли пропущенного слова в первом предложении, слова «завтрак» и «пить» уже находились в вашей кратковременной памяти. Очевидным ответом был «сок».
Во втором примере ваша память о «Калифорнии» и слова «живет в», скорее всего, натолкнули вас на мысль о калифорнийском «апельсиновом округе» (Ориндж Каунти). В обоих случаях ваш мозг удерживал уже известную ему информацию во время обработки новой. Рекуррентная нейронная сеть[135] – вычислительный эквивалент этого процесса.
На рис. 12.8 показана простая рекуррентная нейронная сеть, в которой выходные данные подаются обратно в сеть, в результате чего создается «память».
В случае с вышеописанной задачей классификации текста обучающую выборку образуют тысячи или миллионы входных-выходных пар, пересекающихся последовательностей слов. Например, вход «За завтраком я» будет сопоставлен с выходом «завтраком я люблю». Когда система просматривает последовательности слов в предложении, она также «запоминает» те слова, которые встретились ей ранее. Таким образом, когда сеть видит вход «пить апельсиновый», то выходом, скорее всего, будет «пить апельсиновый сок», если исторические данные содержат предложения с фразой «апельсиновый сок» или «пить сок».
Вы уже наверняка понимаете, как подобные алгоритмы глубокого обучения можно использовать для более быстрого сочинения ответов на письма и исправления грамматических ошибок прямо в процессе набора текста. Эта технология была реализована в функции «Smart Compose» сервиса Google Gmail в 2018 году; она предлагает текст, помогая вам заканчивать свои _________, и работает на основе рекуррентных нейронных сетей[136].
Теперь, когда мы обсудили технические подробности процесса глубокого обучения, давайте рассмотрим его практические аспекты.
Глубокое обучение на практике
По поводу глубокого обучения очень сложно не проникнуться энтузиазмом. Мы коснулись лишь поверхности его потенциала. А крупнейшие мыслители современности убедительно доказывают, что эта технология во многом будет определять наше будущее. Однако этот энтузиазм может отвлечь нас от проблем, свойственных работе с данными.
Есть ли у вас данные?
Какой бы захватывающей ни казалась технология глубокого обучения, вероятно, самую большую трудность для компаний представляет недостаток размеченных обучающих данных. Как говорилось в эпиграфе к этой главе, данные – это «топливо, питающее наши интеллектуальные машины, без которого ничего не было бы возможно». Тем не менее, как уже не раз было сказано, мы снова и снова видим, как многие компании торопятся приступить к глубокому обучению, не имея достаточного объема размеченных данных для решения стоящей перед ними специфической задачи.
Эксперт по глубокому обучению и ИИ Эндрю Ын сформулировал эту проблему так:[137]
Главное препятствие для использования преимуществ ИИ в экономике – огромный объем необходимой кастомизации. Чтобы использовать компьютерное зрение для проверки промышленных товаров, нам нужно обучать разные модели для каждого продукта, который мы хотим проверить: для каждой модели смартфона, для каждого полупроводникового чипа, для каждого бытового прибора и так далее.
И для каждой из этих моделей потребуется собственный – и, скорее всего, очень большой набор размеченных изображений.
Трансферное обучение, или как работать с небольшими наборами данных
При наличии некоторого количества размеченных данных, например, не тысяч, а сотен изображений, вашу команду может выручить так называемое трансферное обучение.
Идея трансферного обучения заключается в загрузке модели, обученной распознавать такие повседневные объекты, как воздушные шары, кошки, собаки и так далее[138]. Это означает, что тысячи значений параметров в сети были оптимизированы для работы с группой изображений. Как вы помните, первые слои нейронных сетей, обученных на изображениях, изучают такие общие представления, как формы и линии. А последующие, более глубокие слои соединяют эти края и линии, формируя ожидаемое выходное изображение.
Суть трансферного обучения – выделить несколько последних слоев, которые изучают то, как линии и края образуют, например, изображения кошек и собак, и заменить их новыми слоями, которые в результате очередного раунда обучения становятся способны объединять эти формы в очертания опухолей на медицинских изображениях. Имейте в виду то, что трансферное обучение может уменьшить количество размеченных изображений в 10 раз, но оно не позволяет обойтись несколькими десятками.
Являются ли ваши данные структурированными?
Ореол таинственности вокруг глубокого обучения в значительной степени обусловлен его прогностической эффективностью в отношении перцептивных данных: изображений, видео, текста и аудио, то есть тех данных, которые мы можем понять, оценить и использовать результаты, не заглядывая в электронную таблицу. В случае со структурированными данными, то есть типичными строками и столбцами, глубокое обучение далеко не всегда может повысить производительность модели.
Если при попытке построения модели контролируемого обучения на структурированном наборе данных ваши специалисты обращаются к глубокому обучению как к методу последней надежды, потому что «все остальное не сработало» – вас, скорее всего, постигнет разочарование.
При работе со структурированными данными глубокие нейронные сети часто проигрывают методам, основанным на использовании деревьев решений (см. главу 10). Без сомнения, существуют исключения, но если точность вашей модели на основе деревьев решений удручающе низкая, то вам лучше потратить время на устранение проблем в ваших данных и оценку принципиальной возможности решения поставленной задачи. (Помните, что наличие размеченных данных еще не гарантирует обнаружения связей между входными и выходными параметрами.) Залог эффективности глубокого обучения – существование отношений между входными и выходными данными. Однако данный метод не может сгенерировать нечто из ничего.
Качество и полнота ваших данных по-прежнему имеют значение.
Как будет выглядеть сеть?
Несмотря на кажущуюся простоту настройки глубоких нейронных сетей, в ходе этого процесса необходимо принять множество решений. Например:
– Сколько слоев должно быть в сети?
– Сколько нейронов должно быть в каждом слое?
– Какие функции активации следует использовать?
Мы не будем останавливаться на этих вопросах (им посвящено множество отличных книг – см. врезку). Просто отметим, что специалисты по работе с данными могут потратить несколько недель на эксперименты с этими параметрами и общей архитектурой сети. При построении большой сети старайтесь не допускать ее переобучения; в этом вам помогут уроки из глав 9 и 10.
Глубокое обучение для практиков
Если вы хотите научиться самостоятельно создавать модели глубокого обучения, мы настоятельно рекомендуем серию книг Франсуа Шолле, посвященных использованию библиотеки глубокого обучения Keras для языков R и Python.
• Шолле Ф. «Глубокое обучение на Python» (Издательство: Питер, 2018).
• Шолле Ф. и Аллер Дж. Дж. «Глубокое обучение на R». (Издательство: Питер, 2018).
Искусственный интеллект и вы
В