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

Мы рассмотрели три ключевых свойства сверточных нейронных сетей, а именно:

  1. локальные рецептивные поля
  2. общие веса и смещения (в заданном ядре или фильтре)
  3. объединение слоев

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

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

  1. увеличение количества сверточных слоев объединения
  2. использование единиц ReLU вместо сигмовидной или tanh разновидности
  3. алгоритмическое расширение обучающих данных
  4. добавление полносвязных слоев (только для скромного улучшения)
  5. используя ансамбль сетей

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

Учитывая вопросы, обсуждавшиеся на предыдущих заседаниях нашей исследовательской группы (в частности, проблема исчезающего градиента), как работает обучение ConvNet? Ну:

  1. сверточные слои имеют меньше параметров из-за распределения веса и смещения
  2. «мощные» методы регуляризации (например, отсев) для уменьшения переобучения
  3. Единицы ReLU (более быстрое обучение по сравнению с сигмовидной/tanh)
  4. использование графических процессоров, если мы тренируемся для многих эпох
  5. достаточно большой набор обучающих данных (включая алгоритмическое расширение, если это возможно)
  6. правильный выбор функции затрат
  7. инициализация разумного веса

Помимо ConvNets, мы затронули другие популярные архитектуры глубоких нейронных сетей:

  1. рекуррентные нейронные сети (RNN)
  2. (расширенное обсуждение) блоков долговременной кратковременной памяти (LSTM)
  3. сети глубокого убеждения (DBN)

Мы также обсудили реализации TensorFlow для поэтов, которые упрощают использование мощной нейросетевой архитектуры классификации изображений Inception v3. Некоторые из нас работали с демо-версией Dockerized, особо отметив члена исследовательской группы Томаса Балестри, который быстро обучил его инструменту классификации изображений для потребительских товаров.

Этим занятием мы завершили учебник Нильсена! Далее у нас идут заметки и лекции из Стэнфордского класса CS231n (Сверточные нейронные сети для визуального распознавания).

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