Bog'liq Цэй Ш., Байлесчи С., и др. - JаvaScript для глубокого обучения (Библиотека программиста) - 2021
Часть II • Введение в TensorFlow.js
Резюме
z
z
Перенос обучения — процесс переиспользования предобученной модели или
ее части для схожей задачи, но не идентичной той, для которой изначально об
учалась данная модель. Подобное переиспользование ускоряет новое обучение.
z
z
На практике при переносе обучения часто используются сверточные сети, обу
ченные на очень больших наборах данных, предназначенных для классификации,
наподобие сети MobileNet, обученной на наборе ImageNet. За счет одного размера
исходного набора данных и разнообразия примеров данных в нем сверточные
слои подобных предобученных моделей представляют собой мощные универ
сальные средства выделения признаков для широкого диапазона задач машинно
го зрения. Обучить подобные слои на небольшом количестве данных, доступном
в типичных задачах переноса обучения, очень сложно, а то и вовсе невозможно.
z
z
Мы обсудили несколько подходов к переносу обучения в TensorFlow.js, отлича
ющихся друг от друга следующим: 1) создаются ли новые слои в качестве «новой
верхушки» для переноса обучения и 2) производится ли перенос обучения с по
мощью одного экземпляра модели или двух. Каждый из этих подходов отличает
ся своими достоинствами и недостатками и пригоден для различных сценариев
использования (см. табл. 5.1).
z
z
Путем задания атрибута
trainable
слоев модели можно предотвратить обновле
ние их весовых коэффициентов во время обучения (вызовов
Model.fit()
). Эта
методика, называемая блокированием, служит для «защиты» слоев выделения
признаков в базовой модели во время переноса обучения.
z
z
В некоторых задачах переноса обучения можно резко повысить скорость работы
новой модели за счет разблокирования нескольких верхних слоев базовой модели
после начального этапа обучения. Такое ускорение отражает адаптацию разбло
кированных слоев к уникальным признакам нового набора данных.
z
z
Перенос обучения — универсальная и очень гибкая методика. Благодаря ему
базовая модель может помочь при решении задач, отличных от той, для которой
она изначально обучалась. Для иллюстрации этого мы продемонстрировали об
учение модели обнаружения объектов, основанной на MobileNet.
z
z
Функции потерь в TensorFlow.js можно описывать в виде пользовательских
JavaScriptфункций с тензорными входными и выходными значениями. Как мы
показали в примере обнаружения простых объектов, на практике для решения
задач машинного обучения часто оказываются необходимы пользовательские
функции потерь.