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

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

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

В общем, имеются сети принципиально отличающиеся устройством и принципами:

* сети прямого распространения;

* свёрточные нейронные сети ;

* рекуррентные нейронные сети;

* автоматический кодировщик (классический, разряженный, вариационный, шумоподавляющий) ;

* сети доверия ("deep belief");

* генеративно состязательные сети – противостояние двух сетей: генератора и оценивателя;

* нейронные машины Тьюринга – нейронная сеть с блоком памяти;

* нейронные сети Кохонена – для обучения без учителя;

* различные архитектуры кольцевых нейронных сетей: нейронная сеть Хопфилда, цепь Маркова, машина Больцмана.

Рассмотрим более подробно наиболее часто применяемые сети, а именно, сети прямого распространения, свёрточные и рекуррентные:

Нейронные сети прямого распространения:

* два входа и один выход – Percetron (P);

* два входа, два нейрона полносвязных с выходом и один выход – Feed Forward (FF) или Redial Basics Network (RBN);

* три входа, два слоя по четыре полносвязных нейрона и два выхода Deep Feed Forward (DFF);

* глубокие нейронные сети;

* сеть экстремального распространения – сеть со случайными связями (нейронная эхо–сеть).

Cвёрточные нейронные сети:

* традиционные свёрточные нейронные сети (CNN) – классификация изображений;

* развёртывающие нейронные сети – генерация изображений по типу;

* глубинные свёрточные обратные графические сети (DCEGC) – соединение свёрточной и развёртывающей нейронных сетей для преобразования или объединения изображений.

Рекуррентные нейронные сети:

* рекуррентные нейронные сети – сети с памятью у нейронов для анализа последовательностей, в которых последовательность имеет значение, таких как текст, звук и видео;

* сети с долгой краткосрочной памятью (LSTM) – развитие рекуррентных нейронных сетей, в которых нейроны могут классифицировать данные, какие стоит запомнить в долгоживущую память от тех, которые стоит забыть и удалить информацию из памяти о них;

* глубокие остаточные сети – сети со связями между слоями (по работе сходны с LSTM);

* управляемые рекуррентные нейроны (GRU).

Основы для написания сетей.

До 2015 года с большим отрывом лидировала scikit–learn, которую догонял Caffe, но с выходом TensorFlow он сразу стал лидером. Со временем только набирая отрыв с двухкратного на трёхкратный к 2020 году, когда на GitHub набралось более 140 тысяч проектов, а у ближайшего конкурента чуть более 45 тысяч. На 2020 году по убывающей расположились Keras, scikit–learn, PyTorch (FaceBook), Caffe, MXNet, XGBoost, Fastai, Microsoft CNTK (CogNiive ToolKit), DarkNet и ещё некоторые менее известные библиотеки. Наиболее популярными для отрытых проектов на GitHub можно выделить библиотеку PyTorch и TenserFlow. Если смотреть на количество звёздочек на GitHub по библиотекам, то на 2020 год тысяч звёздочек:

* TenserFlow: 153 * Keras: 51 * PyTorch: 46 * Sckit-learn: 45 * Caffe: 31 * MXNet: 19 * CNTK: 17 * Theane: 9 * Caffe2: 8

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

* FaceBook PyTorch – хороший вариант для обучения и прототипирования из–за высокого уровня и поддержки различных сред, динамический граф, может дать преимущества при обучении. Используется в Twitter, Salesforce.

* Google TenserFlow – имел изначально статический граф решения, ныне поддерживается и динамический. Используется в Gmail, Google Translate, Uber, Airbnb, Dropbox. Для привлечения использования в облаке Google под него внедряется аппаратный процессор Google TPU (Google Tensor Processing Unit).

Перейти на страницу:

Похожие книги

Искусство программирования для Unix
Искусство программирования для Unix

Книги, подобные этой, редко появляются на прилавках магазинов, поскольку за ними стоит многолетний опыт работы их авторов. Здесь описывается хороший стиль Unix- программирования, многообразие доступных языков программирования, их преимущества и недостатки, различные IPC-методики и инструменты разработки. Автор анализирует философию Unix, культуру и основные традиции сформированного вокруг нее сообщества. В книге объясняются наилучшие практические приемы проектирования и разработки программ в Unix. Вместе с тем описанные в книге модели и принципы будут во многом полезны и Windows-разработчикам. Особо рассматриваются стили пользовательских интерфейсов Unix-программ и инструменты для их разработки. Отдельная глава посвящена описанию принципов и инструментов для создания хорошей документации.Книга будет полезной для широкой категории пользователей ПК и программистов.

Эрик Стивен Реймонд

ОС и Сети / Программирование / Прочая компьютерная литература / Книги по IT