Обилие знаний, связанных с машинным обучением, - это самая замечательная вещь в этом предмете. Баланс теории и кодирования требует устойчивого и дисциплинированного подхода. В этом уроке из пяти серий мы увидели CNN, где мы увидели различные подходы к различным сценариям, а затем поработали над встраиванием слов, которое было нашим шлюзом к обработке естественного языка, и, наконец, закончили поддержкой векторных машин (SVM), которые были столь же мощными, как и Искусственные нейронные сети во время их создания.

Это все, что нужно для машинного обучения?

Если у нас возникают эти вопросы, то мы абсолютно правы, что думаем так же! Вышеупомянутые темы представляют собой лишь краткий обзор моделей контролируемого обучения, которые доступны для различных областей. CNN захватывают глубокое обучение, вложения захватывают NLP, а SVM захватывают контролируемый алгоритм машинного обучения, но в целом все это соответствует подходу контролируемого обучения. Таким образом, мы также должны понимать, что изначально, когда мы говорим о машинном обучении, нам говорят, что существует три класса машинного обучения.

  1. Контролируемое обучение
  2. Неконтролируемое обучение
  3. Обучение с подкреплением

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

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

Кластеризация k-средних

Целью кластеризации является создание групп точек данных, в которых точки в разных кластерах не похожи, а точки в кластере похожи, k - это количество классов. В k-средних эти группы определяются путем создания центроида для каждой группы.

Иерархическая кластеризация:

Задача здесь уникальна, поскольку мы намерены построить иерархию кластеров, то есть получить определенную степень детализации в различных классах. Алгоритм такой ...

  1. Начнем с начальных k кластеров
  2. Объедините два кластера, которые находятся ближе всего друг к другу, чтобы получить кластеры k-1.
  3. Пересчитайте расстояния между кластерами
  4. повторять до тех пор, пока не будет получен один кластер из k точек данных.

Уменьшение размерности:

Анализ главных компонентов (PCA)

Во-первых, небольшое напоминание о линейной алгебре - давайте поговорим о пространствах и базисах.

Вы знакомы с координатной плоскостью с началом координат O (0,0), а базисные векторы будут i (1,0) и j (0,1). Базисные векторы сообщают нам охват координатной плоскости, которую они покрывают. Следовательно, у нас может быть несколько векторов, покрывающих одно и то же пространство.

Это означает, что мы можем изменить основу пространства. Теперь представьте себе гораздо более многомерное пространство. Мол, 50к габаритов. Вы можете выбрать основу для этого пространства, а затем выбрать только 200 наиболее значимых векторов этой основы. Эти базисные векторы называются главными компонентами, а выбранное вами подмножество составляет новое пространство, которое меньше по размерности, чем исходное пространство, но сохраняет как можно большую сложность данных.

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

Разложение сингулярного вектора:

SVD - это надежный и эффективный метод разложения матриц. Он также работает с прямоугольными матрицами, в отличие от других методов, таких как методы разложения по собственным значениям. Псевдообратная матрица - это обобщение матрицы, обратной для квадратных матриц, на прямоугольные матрицы, в которых количество строк и столбцов не равно, иначе говоря, обратное преобразование Мура-Пенроуза.

from numpy import array
from scipy.linalg import svd
# define a matrix
A = array([[1, 2], [3, 4], [5, 6]])
U, s, VT = svd(A)

NumPy предоставляет функцию pinv () для вычисления псевдообратной прямоугольной матрицы.

from numpy import array
from numpy.linalg import pinv
A = array([[0.1, 0.2],[0.3, 0.4],[0.5, 0.6],[0.7, 0.8]])
# calculate pseudoinverse
B = pinv(A)

Применение в уменьшении размерности

Данные с большим количеством функций, например, с большим количеством функций, чем наблюдений (строк), могут быть сокращены до меньшего подмножества функций, которые наиболее важны для задачи прогнозирования. В результате получается матрица с более низким рангом, которая, как говорят, аппроксимирует исходную матрицу. Для этого мы можем выполнить операцию SVD с исходными данными и выбрать k самых больших сингулярных значений в Sigma. Эти столбцы можно выбрать из Sigma, а строки - из V ^ T.

Что дальше?

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

Обучение с подкреплением:

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

Для читателей, заинтересованных в углублении в RL и математике, стоящей за ним, я предлагаю вам прочитать Лекции Дэвида Сильвера и книгу Ричарда Саттона по RL. Удивительная математика поддерживает эту прекрасную поддомену машинного обучения.

Терминология:

Марковский процесс принятия решений (MDP): вдохновленные конечными автоматами, это модели с конечными состояниями. Процесс моделируется вероятностно, так что в каждом состоянии будущее состояние прогнозируется на основе вероятностей. Имеет смысл, правда? Во время обучения агента награды связаны с каждым происходящим переходом. Определение MDP состоит в том, что текущее состояние не зависит от предыдущих состояний. Следовательно, это без памяти.

Q-Learning: у нас есть функция Q, которая принимает на вход состояние и действие и возвращает вознаграждение за это действие в текущем состоянии. Прежде чем мы исследуем среду, Q дает то же (произвольное) фиксированное значение. Но затем, по мере того, как мы больше исследуем среду, Q дает нам все лучшее и лучшее приближение значения действия a в состоянии s. Мы обновляем нашу функцию Q по мере продвижения.

Фактор скидки помогает при принятии решения о важных состояниях и наградах, а также гиперпараметр.

Время кодирования:

Давайте посмотрим на код Андрея Карпати из 130 строк, который реализует обучение с подкреплением с нуля, используя только numpy, на базе ATARI 2600 Pong спортзала OpenAI. Я предлагаю вам прочитать его блог здесь, чтобы получить представление о RL.

Что ж, OpenAI был основан, чтобы ускорить развитие RL и сделать его наравне с контролируемым обучением. Об использовании тренажерных залов OpenAI мы поговорим в другом блоге. Их документация тоже легко понять. Я предлагаю вам прочитать блог Андрея Карпати - лучшую статью, которая поможет вам начать работу с RL. Это был урок 5 из серии из 5 частей.

С любыми вопросами, предложениями или отзывами обращайтесь ко мне по адресу [email protected].