Машинное обучение на практике – от модели PyTorch до Kubeflow в облаке для BigData - страница 15

Шрифт
Интервал


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

Сам же процесс обучения можно разделить на этапы: инициализация, само обучение и предсказание.

Если же у нас цифра может быть различного размера, то применяется pooling слои, которые масштабируют изображение в меньшую сторону. По какому алгоритму будет вычисляться то, что будет записано при объединении, зависит от алгоритма, обычно это функция “max” для алгоритма «max pooling» или «avg» (среднеквадратичные значение соседних ячеек матрицы) – average pooling.

У нас уже появилось несколько слоёв. Но в применяемых на практике нейронных сетях их может быть очень много. Сети с количеством слоёв больше четырёх слоёв принято называть глубокими нейронными сетями (DML, Deep ML). Их может быть очень много, что приводит к сложности. С улучшением архитектур, позволяющих уменьшить или обойти такие ограничения, появляются сети с сотнями слоёв. Например, блоки Residual Connect, позволяющие сохранить градиенты и ставшие стандартом для глубоких сетей, появились впервые в ResNet с количеством слоёв 152 штуки и это далеко не самая глубокая сеть. Но, как вы уже заметили, количество слоёв не берётся, по принципу, чем больше, тем лучше, а прототипируется. Излишнее количество ухудшает качество за счёт затухания, если для этого не применять определённые решения, такие как проброс данных с последующим суммированием. Примерами архитектур нейронных сетей могут быть ResNeXt, SENet, DenseNet, Inception–Res Net–V2, Inception–V4, Xception, NASNet, MobileNet V2, Shuffle Net и Squeeze Net. Большинство из этих сетей предназначены для анализа изображений и именно изображения, зачастую, содержат наибольшее количество деталей, и на эти сети возлагается наибольшее количество операций, чем и обуславливается их глубина. Одну из подобных архитектур мы рассмотрим при создании сети классификации цифр – LeNet–5, созданную в 1998.

Если же нам нужно не просто распознать цифру или букву, а их последовательность, заложенный в них смысл, то нам нужна связь между ними. Для этого нейронная сеть после анализа первой буквы отравляет на свой вход вместе со следующей буквой результат анализа текущей. Это можно сравнить с динамической памятью, а сеть реализующую такой принцип, называют рекуррентной (RNN). Примеры таких сетей (с обратными связями): сеть Кохонена, сеть Хопфилда, ART– модели. Рекуррентные сети анализируют текст, речь, видео информацию, производят перевод с одного языка на другой, генерируют текстовое описание к изображениям, генерируют речь (WaveNet MoL, Tacotron 2), категоризируют тексты по содержанию (принадлежность к спаму). Основным направлением, в котором работают исследователи в попытке улучшить в подобных сетях является определение принципа, по которому сеть будет решать, какую, на сколько долго и на сколько сильно будет сеть учитывать предыдущую информацию в будущем. Сети, приминающие специализированные инструменты по сохранению информации, получили название LSTM (Long–short term memory).