Часть I • Актуальность и основные понятия
не только его размер, но и соответствующий ежегодный конкурс. Как демонстриро
вали ImageNet и Kaggle, начиная с 2010 года проведение конкурсов — замечательный
способ мотивировать исследователей и инженеров на открытие новых горизонтов.
Общие тесты производительности, рекорды друг друга в которых стремились побить
инженеры, сильно помогли текущему росту глубокого обучения.
Усовершенствование алгоритмов
До конца 2000х годов отсутствовал надежный метод обучения очень глубоких
нейронных сетей. В результате нейронные сети оставались довольно неглубокими,
в них использовались только один или два слоя представлений, а значит, они ничем
не выделялись из более утонченных неглубоких методов, например SVM и случай
ных лесов. Основная проблема была с градиентным распространением сигнала через
глубокие эшелоны слоев. Используемый для обучения нейронных сетей сигнал об
ратной связи быстро угасал при увеличении количества слоев.
Все поменялось в районе 2009–2010 годов с появлением нескольких простых,
но важных алгоритмических усовершенствований, улучшавших градиентное рас
пространение сигнала, таких как:
z
z
улучшенные функции активации для слоев нейронных сетей (например, вы
прямленные линейные блоки (ReLU));
z
z
более эффективные схемы для задания начальных значений весов (например,
схема инициализации Глорота);
z
z
улучшенные схемы оптимизации (например, RMSProp и ADAM).
Лишь когда благодаря этим усовершенствованиям стало возможно обучение моде
лей с десятью и более слоями, глубокое обучение показало, на что способно. Наконец,
в 2014–2016 годах были открыты еще более продвинутые способы обратного рас
пространения ошибки, в частности нормализация по минибатчам, остаточные связи
(residual connections) и разделяемые свертки с учетом глубины (depthwise separable
convolutions). Сегодня можно обучать с нуля модели глубиной тысячи слоев.
1.2.
Какой смысл в сочетании JavaScript
и машинного обучения
Машинное обучение, как и другие сферы ИИ и науки о данных, обычно реализуется
на традиционных языках программирования, ориентированных на прикладную часть,
например Python и R, работающих на серверах или рабочих станциях вне браузера
1
.
Подобное положение дел неудивительно. Обучение глубоких нейронных сетей ча
сто требует вычислений с участием многих ядер процессора и GPU, недоступных
непосредственно на вкладках браузера. Ввод и обработку колоссальных объемов
1
Deoras S.
Top 10 Programming Languages for Data Scientists to Learn in 2018 // Analytics
India Magazine, 25 Jan. 2018. http://mng.bz/6wrD.
Do'stlaringiz bilan baham: |