0 шт.
Выбрать страницу

Как решить вашу проблему с помощью нейронных сетей?

Решение вашей проблемы с помощью глубокого обучения

Глубокое обучение находится на заре своего развития. Слоев для нейронных сетей не так уже много, то же самое можно сказать про функции активации и функции потерь(лосс). В принципе для каждой задачи уже существует так называемые SOTA(State Of The Art) или другими словами лучшие решения. Например, Google, Facebook и Nvidia постоянно выпускают новые решения различных проблем абсолютно бесплатно. Все достаточно просто, но, например, задачи из обучения с подкреплением оставляют вас задумываться на некоторое время.

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

Типы глубокого обучения

Иерархия типов глубоко обучения достаточно простая и данная иерархия позволяет решить 80% задач. Остальные 20% мы отводим на уникальные решения, написанные для, например, оптимизации деталей для строительства локомотива. Но даже такую задачу можно разбить на более простые компоненты, которые нам будут знакомы.

  1. Обучение с учителем(supervised learning) - это когда у вас есть готовые ответы и вам нужно обобщить алгоритм действий. Например, у вас есть хороший геолог, который профессионально проводит разведку, но он очень старый и больной, но делает свою задачу замечательно. Мы берем результаты его работы и цифровизируем. В результате у нас будет модель, которая отражает его опыт.
  2. Обучение без учителя(unsupervised learning) - это когда у вас есть нет готовых ответов. Например, вы анализируете ДНК. Очень много информации, связь между различными компонентами тяжело найти. В этом случае вы можете применить глубокое обучения для осуществления кластеризации. То есть, в результате у вас появится карта важных компонентов, которую можно использовать. Или, например, вы маркетолог и анализируете Москву на предмет точек скопления людей. Глубокое обучения может помочь вам в проведении исследования.

how_to_solve_your_problem_using_deep_learning.png

Обучение с учителем

Это все случаи, когда у вас есть метки, то есть правильные ответы.

Регрессия

Классификация предсказывает непрерывные события. Например, количество денег заработанных благодаря рекламной компании. Чтобы применить регрессию, в большинстве своем, функция активации в конце сети не нужна. И это одна из самых распространенных ошибок при разработке нейронной сети для регрессии. Иначе у вас не будет падать лосс и нейронная сеть не будет учиться. Для создания регрессии, нужно применить лосс torch.nn.MSELoss или torch.nn.L1Loss.

Классификация

Классификация предсказывает дискретные события. То есть, события, которые можно отдельно сгруппировать. Эту категорию можно разделить на следующие компоненты:

  1. Мультиклассовая классификация. Это когда на выходе из нейронной сети вероятности, которые суммируются в 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.
  2. Классификация с использованием мультиметок. Это, случаи когда вам нужно предсказать не один класс, а сразу несколько. Например, вероятность отказа системы водяной системы охлаждения атомной электростанции, вероятность отказа системы контроля пожарной сигнализации атомной электростанции, вероятность отказа двигателя в третьем блоке атомной электростанции. Все за один раз. Так как это обучение с учителем, то нам и здесь нужны метки, которые необходимо собрать. То есть нам нужна история работы атомного реактора. На выходе из нейронной сети можно ничего не ставить, а просто применить лосс torch.nn.BCEWithLogitsLoss, который уже включает нужную функцию активацию torch.nn.Sigmoid.

Обучение без учителя

Обучения без учителя - это когда у вас нет меток.

  1. Саморганизующиейся карты - это яркий пример обучения без учителя. Позволяет кластеризовать данные для последующего анализа.

  2. Машина Больцмана - это интересная модель базирующияся на энтропии. В двух словах, Машина Больцмана ищет состояние оптимальной энтропии. Возьмем нашу любимую атомную электростанцию. Реакцию распада нужно контролировать и нужно знать параметры, которые нужно подавать на вход. Машина Больцмана найдет оптимальное значения энтропии, которая позволить заработать много денег и не допустить ядерной катастрофы.

Другие виды глубого обучения

Я выделяю GAN и обучение с подкреплением в отдельные категории глубокого обучения. Так как, например, в обучении с подкреплением метки не всегда отражают действительность. По этой причине их тяжело отнести к категории обучения с учителем.

Обучение

Определить тип задачи - это половина работы. Дальше вы можете обратиться к готовым решениям и донастроить свои нейронную сеть.

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

In [ ]: