Решение вашей проблемы с помощью глубокого обучения¶
Глубокое обучение находится на заре своего развития. Слоев для нейронных сетей не так уже много, то же самое можно сказать про функции активации и функции потерь(лосс). В принципе для каждой задачи уже существует так называемые SOTA(State Of The Art) или другими словами лучшие решения. Например, Google, Facebook и Nvidia постоянно выпускают новые решения различных проблем абсолютно бесплатно. Все достаточно просто, но, например, задачи из обучения с подкреплением оставляют вас задумываться на некоторое время.
Для каждой задачи уже есть готовое решение. И вы можете собрать большое и сложное решение из этих компонентов. Это касается таких задач как прогнозирование выручки(регрессия), распознавание изображений(классификация), распознавание речи(классификация), анализ рынка(кластеризация). К этому можно добавить более сложные проблемы связанные с GAN и обучением с подкреплением, которые являются более глубокими концепциями.
Типы глубокого обучения¶
Иерархия типов глубоко обучения достаточно простая и данная иерархия позволяет решить 80% задач. Остальные 20% мы отводим на уникальные решения, написанные для, например, оптимизации деталей для строительства локомотива. Но даже такую задачу можно разбить на более простые компоненты, которые нам будут знакомы.
- Обучение с учителем(supervised learning) - это когда у вас есть готовые ответы и вам нужно обобщить алгоритм действий. Например, у вас есть хороший геолог, который профессионально проводит разведку, но он очень старый и больной, но делает свою задачу замечательно. Мы берем результаты его работы и цифровизируем. В результате у нас будет модель, которая отражает его опыт.
- Обучение без учителя(unsupervised learning) - это когда у вас есть нет готовых ответов. Например, вы анализируете ДНК. Очень много информации, связь между различными компонентами тяжело найти. В этом случае вы можете применить глубокое обучения для осуществления кластеризации. То есть, в результате у вас появится карта важных компонентов, которую можно использовать. Или, например, вы маркетолог и анализируете Москву на предмет точек скопления людей. Глубокое обучения может помочь вам в проведении исследования.
Обучение с учителем¶
Это все случаи, когда у вас есть метки, то есть правильные ответы.
Регрессия¶
Классификация предсказывает непрерывные события. Например, количество денег заработанных благодаря рекламной компании. Чтобы применить регрессию, в большинстве своем, функция активации в конце сети не нужна. И это одна из самых распространенных ошибок при разработке нейронной сети для регрессии. Иначе у вас не будет падать лосс и нейронная сеть не будет учиться. Для создания регрессии, нужно применить лосс torch.nn.MSELoss
или torch.nn.L1Loss
.
Классификация¶
Классификация предсказывает дискретные события. То есть, события, которые можно отдельно сгруппировать. Эту категорию можно разделить на следующие компоненты:
- Мультиклассовая классификация. Это когда на выходе из нейронной сети вероятности, которые суммируются в 1.0 или другими словами 100%. Например, категории: уставший, веселый или расстроенный человек на фотографии и вы получите результат из нейронной сети (0.8, 0.15, 0.05) соответственно после подачи на вход фотографии. На выходе из нейронной сети прописывается функция
torch.nn.functional.softmax
, которая как раз и возвращает вероятности. После этого берется функцияtorch.argmax
, которая возвращает индекс максимального аргумента, на выходе и вы получаете ответ, что человек уставший, так как 0.8 максимальное число и соответствует индексу [0]. То есть нейронная сеть выдаст вам ответ [0]. И вы знаете, что [0] соответствует слову уставший. В качестве функции потерь или другими словами лосса можно использоватьtorch.nn.CrossEntropyLoss
илиtorch.nn.NLLLoss
в сочетании сtorch.nn.functional.log_softmax
. - Классификация с использованием мультиметок. Это, случаи когда вам нужно предсказать не один класс, а сразу несколько. Например, вероятность отказа системы водяной системы охлаждения атомной электростанции, вероятность отказа системы контроля пожарной сигнализации атомной электростанции, вероятность отказа двигателя в третьем блоке атомной электростанции. Все за один раз. Так как это обучение с учителем, то нам и здесь нужны метки, которые необходимо собрать. То есть нам нужна история работы атомного реактора. На выходе из нейронной сети можно ничего не ставить, а просто применить лосс
torch.nn.BCEWithLogitsLoss
, который уже включает нужную функцию активациюtorch.nn.Sigmoid
.
Обучение без учителя¶
Обучения без учителя - это когда у вас нет меток.
Саморганизующиейся карты - это яркий пример обучения без учителя. Позволяет кластеризовать данные для последующего анализа.
Машина Больцмана - это интересная модель базирующияся на энтропии. В двух словах, Машина Больцмана ищет состояние оптимальной энтропии. Возьмем нашу любимую атомную электростанцию. Реакцию распада нужно контролировать и нужно знать параметры, которые нужно подавать на вход. Машина Больцмана найдет оптимальное значения энтропии, которая позволить заработать много денег и не допустить ядерной катастрофы.
Другие виды глубого обучения¶
Я выделяю GAN и обучение с подкреплением в отдельные категории глубокого обучения. Так как, например, в обучении с подкреплением метки не всегда отражают действительность. По этой причине их тяжело отнести к категории обучения с учителем.
Обучение¶
Определить тип задачи - это половина работы. Дальше вы можете обратиться к готовым решениям и донастроить свои нейронную сеть.
Записывайтесь на мой курс, где я расскажу все более детально и подробно, а главное простыми словами. Для меня нет глупых вопросов, для меня нет начинающих, для меня есть желающие познать и я помогаю им в этом.