В четверг вечером наша исследовательская группа по глубокому обучению собралась в пятый раз. Рекомендуемой подготовительной работой было чтение последней главы вводного текста Майкла Нильсена о нейронных сетях. Эта конкретная глава была посвящена использованию сверточных нейронных сетей для классификации изображений,например, цифр MNIST — или почти чего угодно еще!
Мы рассмотрели три ключевых свойства сверточных нейронных сетей, а именно:
- локальные рецептивные поля
- общие веса и смещения (в заданном ядре или фильтре)
- объединение слоев
В частности, мы отметили, как эти свойства вместе облегчают обнаружение особенностей изображения (например, краев, кривых), не зависящее от местоположения. В свою очередь, подача сверточных слоев в плотный (полностью связанный) слой позволяет ассимилировать представления отдельных признаков в более сложные представления (например, цифру «8» или — в более глубоких сетях — школьный автобус или кошачье лицо).
Далее мы обсудили изменения архитектуры, которые могут повысить точность классификации изображений ConvNets. К ним относятся:
- увеличение количества сверточных слоев объединения
- использование единиц ReLU вместо сигмовидной или tanh разновидности
- алгоритмическое расширение обучающих данных
- добавление полносвязных слоев (только для скромного улучшения)
- используя ансамбль сетей
Я отправил записную книжку Jupyter на GitHub здесь, чтобы подробно проиллюстрировать, как вы можете реализовать эти улучшения с помощью Theano. Результаты включают точность классификации после каждой эпохи обучения.
Учитывая вопросы, обсуждавшиеся на предыдущих заседаниях нашей исследовательской группы (в частности, проблема исчезающего градиента), как работает обучение ConvNet? Ну:
- сверточные слои имеют меньше параметров из-за распределения веса и смещения
- «мощные» методы регуляризации (например, отсев) для уменьшения переобучения
- Единицы ReLU (более быстрое обучение по сравнению с сигмовидной/tanh)
- использование графических процессоров, если мы тренируемся для многих эпох
- достаточно большой набор обучающих данных (включая алгоритмическое расширение, если это возможно)
- правильный выбор функции затрат
- инициализация разумного веса
Помимо ConvNets, мы затронули другие популярные архитектуры глубоких нейронных сетей:
- рекуррентные нейронные сети (RNN)
- (расширенное обсуждение) блоков долговременной кратковременной памяти (LSTM)
- сети глубокого убеждения (DBN)
Мы также обсудили реализации TensorFlow для поэтов, которые упрощают использование мощной нейросетевой архитектуры классификации изображений Inception v3. Некоторые из нас работали с демо-версией Dockerized, особо отметив члена исследовательской группы Томаса Балестри, который быстро обучил его инструменту классификации изображений для потребительских товаров.
Этим занятием мы завершили учебник Нильсена! Далее у нас идут заметки и лекции из Стэнфордского класса CS231n (Сверточные нейронные сети для визуального распознавания).
Чтобы ознакомиться с тщательно отобранными ресурсами по науке о данных, включая рекомендации по началу работы с глубоким обучением, посетите мой сайт.