Участники курса “Программирование глубоких нейронных сетей на Python” часто задают мне вопрос, что нужно почитать, чтобы разобраться с математикой глубоких нейронных сетей. Вот список книг и статей, которые я рекомендую.

Книги

  1. Ian Goodfellow, Yoshua Bengio, Aaron Courville. Deep Learning. MIT Press.

    На мой взгляд, эта самая лучшая книга по глубокому обучению. Если бы меня попросили назвать единственный самый полезный источник для изучения теории глубокого обучения нейронных сетей, то я бы назвал именно эту книгу.

    Книга Deep Learning состоит из трех частей. В первой части рассматриваются основные разделы математики, которые необходимы для понимания работы глубоких нейронных сетей: линейная алгебра, теория вероятности, вычислительная математика и основы машинного обучения. Вторая часть предназначена для тех, кто использует глубокое обучение на практике. Рассматриваются сверточные и рекуррентные нейронные сети, регуляризация и методы оптимизации. Третья часть содержит описание исследовательских тем: автокодировщики, генеративные модели, структурированные вероятностные модели (structured probabilistic models) и др.

    Книга доступна бесплатно на сайте www.deeplearningbook.org, ее также можно купить на Amazon.

  2. Francois Chollet. Deep Learning with Python. Manning Publications.

    Если вам не нравится академический стиль Deep Learning, то попробуйте посмотреть книгу от создателя Keras Francois Chollet. В ней математические основы рассказаны в инженерном стиле с примерами кода на Python. Во второй главе книги подробно рассматриваются темы из линейной алгебры, которые нужны для нейронных сетей, а также метод стохастического градиентного спуска. Глава 5 начинается с рассмотрения математических основ сверточных нейронных сетей, а глава 6 – сетей долго-краткосрочной памяти (LSTM).

    Книга пока не закончена и доступна в режиме Manning Early Access Program (MEAP). Но математические разделы уже написаны.

Статьи

  1. Yann LeCun, Leon Bottou, Genevieve B. Orr, Klaus-Robert Müller. Efficient BackProp. Neural Networks: Tricks of the Trade, 1998. pp 9-50.

    Классическая статья с подробным исследованием особенностей работы алгоритма обратного распространения ошибки. В статье объясняется почему нормализация входных данных увеличивает эффективность работы алгоритма обратного распространения ошибки, зачем перемешивание входные данные перед обучением, почему гиперболический тангенс лучше экспоненциальной сигмоидальной функции активации и многое другое.

  2. Sergey Ioffe, Christian Szegedy. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. 2015.

    Как мы узнали из предыдущей статьи, с нормализованными входными данными алгоритм обратного распространения ошибки работает гораздо лучше. В этой статье делается еще один шаг вперед и предлагается нормализовать данные не только на входе в нейронную сеть, но и внутри сети. Для этого предлагается использовать специальные слои пакетной нормализации (Batch Normalization). Это позволяет сократить время обучения за счет использования более высокого значения параметра скорости обучения (learning rate), а также снизить переобучение.

  3. Xavier Glorot, Yoshua Bengio. Understanding the difficulty of training deep feedforward neural networks. 2010.

    Авторы статьи исследовали причины возникновения проблемы исчезающего градиента, которая долго являлась существенным препятствием для обучение действительно глубоких нейронных сетей, включающих большое количество слоев. Оказалось, что традиционный на то время подход с использование логистической сигмоидальной функции активации совместно с начальной инициализацией весов случайным образом приводит к быстрому насыщению и исчезанию градиента. Авторы предложили новый метод инициализации весов, который они назвали нормализованная инициализация. Благодаря такой нормализации сигнал об ошибке при обучении распространяется гораздо лучше. Нормализованная инициализация весов широко используется в библиотеках обучения нейронных сетей под названием инициализация Xavier или Glorot.

  4. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification. 2015.

    В статье описана адаптация метода нормализованной инициализации весов для полулинейной функции активации, которая сейчас стала наиболее популярной. Метод также реализован во многих библиотеках глубокого обучения с названием инициализация He.

Почему важно разобраться с методами нормализованной инициализации весов и пакетной нормализации? Именно они позволили на практике решить проблему исчезающего градиента, которая долгое время препятствовала практическому применению глубоких нейронных сетей. Эти методы сделали возможным обучение глубоких нейронных сетей состоящих из 100 и более скрытых слоев (например, сеть Microsoft ResNet).

Какие книги и статьи по теории глубоких нейронных сетей кажутся вам самыми полезными? Пишите о них в комментариях.

По теории глубоких нейронных сетей есть также несколько хороших открытых учебных курсов. О них я напишу в отдельной статье.