Openbravo-rus.ru

Образование по русски
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Машинное обучение с подкреплением

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

В обучении с подкреплением существует агент (agent) взаимодействует с окружающей средой (environment), предпринимая действия (actions). Окружающая среда дает награду (reward) за эти действия, а агент продолжает их предпринимать.

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

Среда обычно формулируется как марковский процесс принятия решений (МППР) с конечным множеством состояний, и в этом смысле алгоритмы обучения с подкреплением тесно связаны с динамическим программированием. Вероятности выигрышей и перехода состояний в МППР обычно являются величинами случайными, но стационарными в рамках задачи.

При обучении с подкреплением, в отличии от обучения с учителем, не предоставляются верные пары «входные данные-ответ», а принятие субоптимальнх решений (дающих локальный экстремум) не ограничивается явно. Обучение с подкреплением пытается найти компромисс между исследованием неизученных областей и применением имеющихся знаний (exploration vs exploitation). Баланс изучения-применения при обучении с подкреплением исследуется в задаче о многоруком бандите.

Формально простейшая модель обучения с подкреплением состоит из:

  • множества состояний окружения (states) [math]S[/math] ;
  • множества действий (actions) [math]A[/math] ;
  • множества вещественнозначных скалярных «выигрышей» (rewards).

В произвольный момент времени [math]t[/math] агент характеризуется состоянием [math]s_t in S[/math] и множеством возможных действий [math]A(s_t)[/math] . Выбирая действие [math]a in A(s_t)[/math] , он переходит в состояние [math]s_[/math] и получает выигрыш [math]r_t[/math] . Основываясь на таком взаимодействии с окружающей средой, агент, обучающийся с подкреплением, должен выработать стратегию [math]pi: S to A[/math] , которая максимизирует величину [math]R=r_0 + r_1+cdots+r_n[/math] в случае МППР, имеющего терминальное состояние, или величину:

[math]R=sum_t gamma^t r_t[/math] ,

для МППР без терминальных состояний (где [math]0 leq gamma leq 1[/math] — дисконтирующий множитель для «предстоящего выигрыша»).

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

Постановка задачи обучения с подкреплением [ править ]

[math]S[/math] — множество состояний среды

Игра агента со средой:

  • инициализация стратегии [math]pi_1(a | s)[/math] и состояния среды [math]s_1[/math] ;
  • для всех [math]t = 1 ldots T[/math] :
    • агент выбирает действие [math]a_t ∼ pi_t(a | s_t)[/math] ;
    • среда генерирует награду [math]r_∼ p(r | a_t, s_t)[/math] и новое состояние [math]s_∼ p(s | a_t, s_t)[/math] ;
    • агент корректирует стратегию [math]pi_(a | s)[/math] .

Это марковский процесс принятия решений (МППР), если [math]P(s_= s′, r_= r | s_t, a_t, r_t, s_, a_, r_, .. ,s_1, a_1) = P(s_= s′,r_= r | s_t, a_t)[/math] ,

МППР называется финитным, если [math]|A| lt infty[/math] , [math]|S| lt infty[/math]

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

Наивный подход к решению этой задачи подразумевает следующие шаги:

  • опробовать все возможные стратегии;
  • выбрать стратегию с наибольшим ожидаемым выигрышем.

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

Подход с использованием функции полезности использует множество оценок ожидаемого выигрыша только для одной стратегии [math]pi[/math] (либо текущей, либо оптимальной). При этом пытаются оценить либо ожидаемый выигрыш, начиная с состояния [math]s[/math] , при дальнейшем следовании стратегии [math]pi[/math] ,

[math]V(s) = E[R|s, pi][/math] ,

либо ожидаемый выигрыш, при принятии решения [math]a[/math] в состоянии [math]s[/math] и дальнейшем соблюдении [math]pi[/math] ,

[math]Q(s, a) = E[R|s, pi, a][/math] ,

Если для выбора оптимальной стратегии используется функция полезности [math]Q[/math] , то оптимальные действия всегда можно выбрать как действия, максимизирующие полезность.

Если же мы пользуемся функцией [math]V[/math] , необходимо либо иметь модель окружения в виде вероятностей [math]P(s’|s, a)[/math] , что позволяет построить функцию полезности вида

либо применить т.н. метод исполнитель-критик, в котором модель делится на две части: критик, оценивающий полезность состояния [math]V[/math] , и исполнитель, выбирающий подходящее действие в каждом состоянии.

Имея фиксированную стратегию [math]pi[/math] , оценить [math]E[R|cdot][/math] при [math]gamma = 1[/math] можно просто усреднив непосредственные выигрыши. Наиболее очевидный способ оценки при [math]gamma in (0, 1)[/math] — усреднить суммарный выигрыш после каждого состояния. Однако для этого требуется, чтобы МППР достиг терминального состояния (завершился).

Поэтому построение искомой оценки при [math]gamma in (0, 1)[/math] неочевидно. Однако, можно заметить, что [math]R[/math] образуют рекурсивное уравнение Беллмана:

[math]E[R|s_t]=r_t + gamma E[R|s_][/math] ,

Подставляя имеющиеся оценки [math]V[/math] и применяя метод градиентного спуска с квадратичной функцией ошибок, мы приходим к алгоритму обучения с временными воздействиями (temporal difference (TD) learning). В простейшем случае и состояния, и действия дискретны и можно придерживаться табличных оценок для каждого состояния.

Другие похожие методы: Адаптивный эвристический критик (Adaptive Heuristic Critic, AHC), SARSA и Q-обучение (Q-learning).

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

Специалист по Computer Science Евгений Бурнаев о марковском процессе принятия решений, глубинных нейросетках и построении искусственного интеллекта

Поделиться статьей

Пять лет назад компания DeepMind, офис которой был в Лондоне, выпустила статью, в которой описала, как делать обучение с подкреплением с применением глубинного обучения. Может быть, вы помните, в 1990-х были приставки Dendy, в них можно было играть в такие незамысловатые игры вроде Breakout. Конкретно в этой игре необходимо было управлять пластинкой, которая отбивала мячик, он разрушал некоторое количество кубиков, расположенных наверху экрана. Компания DeepMind построила алгоритм, который умел играть в игры Atari зачастую даже лучше, чем человек. И самое главное, этот алгоритм принимал на вход просто изображение с экрана компьютера.

Один и тот же алгоритм — не было никакой подстройки под конкретную игру — мог обучиться на данных любой из тестируемых игр. Через какое-то время его удавалось обучить так, чтобы он играл не хуже человека. С тех пор этот результат стали называть первым шагом к построению общего искусственного интеллекта. Дело в том, что все приложения, алгоритмы, которые до этого играли в те или иные компьютерные игры или шахматы, были очень сильно ограничены правилами соответствующих игр, в частности правилами шахмат. То есть алгоритмы затачивались исключительно под правила той или иной игры. Алгоритм, который был разработан компанией DeepMind, был самым общим, и не удивительно, что вскоре эту компанию купил Google.

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

Что же такое обучение с подкреплением? Рассмотрим игру Breakout. В ней игрок управляет пластинкой, и у него есть три возможных действия: сдвинуть пластинку влево, сдвинуть пластинку вправо, либо стартануть с этой пластинки шарик. Шарик отскакивает, разрушает блоки наверху экрана, отскакивает от стенок, и дальше необходимо пластинкой его снова подбить, чтобы он полетел вверх. Мы хотим построить алгоритм, который бы автоматически управлял этой пластинкой. Кажется, что данную задачу разумно рассматривать как задачу классификации. Для каждой игровой ситуации мы можем сказать, в какую сторону правильнее всего было бы сдвинуть пластинку. Однако в силу того, что в этой задаче число вариантов и число состояний просто огромно, положение пластинки может быть очень разным, шарик может находиться в разных положениях, то очевидно, что необходима очень большая обучающая выборка.

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

Область машинного обучения, которая занимается решением подобного рода задач, называется обучение с подкреплением. Речь идет о том, что есть некоторый агент, который управляет в случае с игрой пластинкой и на каждом шаге получает отклик, насколько управление было удачным. На основании этого отклика формируется стратегия, для того чтобы максимизировать какую-то премию, полученную в ходе игры, в ходе какого-то процесса. Однако не все так просто. Например, в игре Breakout действие, которое мы делаем, не сразу приводит к получению премии — начислению очков за сбитый кирпичик. Сначала мы подвинули пластинку, через какое-то время она отбила мячик, и только по прошествии времени, когда он долетел до кирпичиков, нам начислили очки. Таким образом, мы не можем рассмотреть эту задачу как классическую задачу классификации. Это одна из трудностей, которая возникает на пути того, чтобы разработать автоматический алгоритм.

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

Для того чтобы ответить на поставленный вопрос, необходимо формализовать описание задачи обучения с подкреплением. Одним из наиболее естественных подходов к формализации является использование такого понятия, как марковский процесс принятия решений. Речь идет о том, что у нас есть некая среда (в примере с игрой это сама игра), в ней действует агент — что-то, что управляет этой пластинкой, ее движением. У агента есть несколько действий: сдвинуть пластинку влево или сдвинуть пластинку вправо. Как только агент совершил действие, среда приходит в новое состояние в зависимости от того, какое состояние было перед этим и какое действие совершил агент. При этом этот переход случайный, то есть мы из какого-то состояния, совершив какое-то действие, можем переходить в разные состояния.

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

Профессия Data Scientist: машинное обучение

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

Записаться на курс

  • Длительность 13 месяцев
  • Помощь в трудоустройстве
  • 7 курсов в одной программе
  • Доступ к курсу навсегда

На рынке не хватает специалистов по Data Science

  • 2 300 компаний сейчас ищут специалистов в Data Science & Machine Learning
  • 80 000 рублей зарплата начинающего специалиста

Данные сайта hh.ru

Кому подойдёт этот курс

Новичкам в IT

Вы получите базовые навыки по аналитике, статистике и математике, которые откроют путь к карьере в Data Science и Machine Learning.

Программистам

Вы прокачаете свои знания и навыки в программировании на Python. Научитесь использовать алгоритмы машинного обучения, решать бизнес-задачи — и усилите портфолио мощными проектами.

Менеджерам и владельцам бизнеса

Научитесь использовать данные для построения прогнозов и оптимизации бизнес-процессов и переведёте компанию на новый уровень.

Чему вы научитесь

Программировать на Python

Визуализировать данные

Работать с библиотеками и базами данных

Применять нейронные сети для решения реальных задач

Строить модели машинного обучения

Писать рекомендательные системы

От первого урока к работе мечты

Студенты и выпускники Skillbox получают индивидуальную поддержку от Центра карьеры на протяжении всего обучения — от помощи с выбором профессии до выхода на работу мечты. Вот как это происходит.

С каждым уроком ваш профессиональный уровень растёт и вы можете планировать карьеру уже во время обучения.

Реакция потенциального работодателя зависит от того, как вы подаёте себя в резюме. Мы дадим советы по его составлению и поможем написать резюме, подающее вас лучшим образом.

Выбираете лучшую вакансию

Мы экономим ваше время — подбираем подходящие вакансии и договариваемся об интервью с работодателем. Вам нужно только пройти собеседование.

Начинаете карьеру мечты

Вы успешно проходите собеседование, выходите на работу и сразу начинаете выполнять задачи.

Записаться на курс или получить бесплатную консультацию

Похоже произошла ошибка. Попробуйте отправить снова или перезагрузите страницу.

Ваша заявка успешно отправлена

Как проходит обучение

Изучаете тему

В курсе — практические видеоуроки.

Выполняете задания

В том темпе, в котором вам удобно.

Работаете с наставником

Закрепляете знания и исправляете ошибки.

Защищаете дипломную работу

И дополняете ею своё портфолио.

Программа

Вас ждут 7 курсов с разным уровнем сложности, знание которых можно приравнять к году работы.

  1. Аналитика. Начальный уровень
  1. Введение.
  2. Основы Python: базовые структуры данных.
  3. Основы Python: циклы и условия.
  4. Основы Python: функции.
  5. Основы Python: классы и объекты.
  6. Основы Python: исключения.
  7. Библиотека NumPy. Часть 1.
  8. Библиотека NumPy. Часть 2.
  9. Библиотека pandas. Часть 1.
  10. Библиотека pandas. Часть 2.
  11. Визуализация данных с помощью matplotlib.
  12. Чтение и запись данных.
  13. Введение в SQL.
  14. Работа со строками.
  1. Основы статистики и теории вероятностей.
  1. Основные концепции Machine Learning (ML).
  2. Жизненный цикл ML-проекта.
  3. Регрессия.
  4. Классификация.
  5. Кластеризация
  6. Дополнительные техники.
  7. Знакомство с Kaggle.
  1. Базовые математические объекты и SymPy. Дроби и преобразования.
  2. Базовые математические объекты и SymPy. Необходимые функции и некоторые дополнительные объекты.
  3. Функции одной переменной, их свойства и графики.
  4. Интерполяция и полиномы.
  5. Аппроксимация и преобразования функций.
  6. Функции нескольких переменных, их свойства и графики.
  7. Линейные функции.
  8. Матрицы и координаты.
  9. Линейные уравнения.
  10. Производная функции одной переменной.
  11. Производная по направлению и градиент + частные производные.
  12. Линейная регрессия.
  13. Собственные векторы и значения. Определитель.
  14. Разложения матриц.
  1. Введение в нейронные сети.
  2. Обучение нейронных сетей.
  3. Нейронные сети на практике.
  4. Свёрточные нейросети для задачи классификации изображений.
  5. Семантическая сегментация. Часть 1. Слабая локализация и полносвёрточные нейросети (FCN).
  6. Семантическая сегментация. Часть 2. Продвинутые архитектуры FCN для семантической сегментации.
  7. Детектирование объектов.
  8. От дискриминативных моделей к генеративным. Style transfer.
  9. Генеративные состязательные сети.
  10. Введение в NLP.
  11. NLP на нейросетях. Рекуррентные нейросети, классификация текстов.
  12. NLP на нейросетях. Языковые модели, Attention, Transformer.
  13. Обучение с подкреплением. Q-Learning.
  14. Обучение с подкреплением. Deep Q-Learning.
  15. Ускорение и оптимизация нейронных сетей.
  16. Внедрение в DL моделей в Production.
  17. Рекомендательные системы.
  18. Вывод моделей машинного обучения в production, post production и мониторинг.
  1. Как стать первоклассным программистом.
  2. Как искать заказы на разработку.
  3. Личный бренд разработчика.
  4. Photoshop для программиста.
  5. Вёрстка email-рассылок. Советы на реальных примерах.
  6. The state of soft skills.
  7. Как мы создавали карту развития для разработчиков.
  8. Как общаться по email и эффективно работать с почтой.
  9. Повышение своей эффективности.
  10. Спор о первом языке программирования.
  11. Саморазвитие: как я не усидел на двух стульях и нашёл третий.
  12. Data-driven подход к продуктивности — инсайты из данных миллиона людей.
  1. IT Resume and CV.
  2. Job interview: questions and answers.
  3. Teamwork.
  4. Workplace communication.
  5. Business letter.
  6. Software development.
  7. System concept development and SRS.
  8. Design.
  9. Development and Testing.
  10. Deployment and Maintenance.

Уже учились на каком-то курсе из программы?

Скажите об этом менеджеру — за этот курс платить не придётся!

Получить полную программу курса и консультацию

Похоже произошла ошибка. Попробуйте отправить снова или перезагрузите страницу.

Алгоритмы машинного обучения: Какой из них выбрать для решения вашей проблемы?

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

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

В этой статье для Statsbot я постараюсь объяснить основные понятия и дать некоторую интуицию использования различных видов алгоритмов машинного обучения для различных задач. В конце статьи вы найдете структурированный обзор основных особенностей описываемых алгоритмов.

Прежде всего, следует выделить четыре типа задач машинного обучения:

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

Обучение с учителем является задачей обучения системы на тренировочном наборе данных. Путем подгонки результатов обучения к тренировочному набору данных, мы хотим найти наиболее оптимальные параметры модели для прогнозирования возможных ответов на других объектах (тестовых наборах данных). Если множество возможных ответов является действительным числом, то это задача регрессии. Если множество возможных ответов имеет ограниченное количество значений, где эти значения являются неупорядоченными, то это задача классификации.

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

В неконтролируемом обучении у нас меньше информации об объектах. В частности, тренировочный набор данных не имеет маркированных данных, относящихся к определённому классу заранее предопределённых данных. Какова наша цель сейчас? Возможно, наблюдать некоторое сходство между группами объектов и включать их в соответствующие кластеры. Некоторые объекты могут сильно отличаться от всех кластеров, и таким образом мы предполагаем, что эти объекты являются аномалиями.

Обучение с частичным привлечением учителя

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

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

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

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

Наиболее часто используемые алгоритмы машинного обучения

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

Линейная регрессия и линейный классификатор

Вероятно, это самые простые алгоритмы машинного обучения. У вас есть функции x1, . xn объектов (матрица A) и метки (вектор b). Ваша цель — найти наиболее оптимальные веса w1, . wn и смещение для этих функций в соответствии с некоторой функцией потерь; например, среднеквадратичная ошибка или средняя абсолютная ошибка для задачи регрессии. В случае среднеквадратичной ошибки существует математическое уравнение из метода наименьших квадратов:

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

Чтобы предотвратить переобучение, мы часто используем методы регуляризации, такие как лассо и гребень. Идея состоит в том, чтобы добавить сумму модулей весов и сумму квадратов весов, соответственно, к нашей функции потерь. Прочтите большой учебник по этим алгоритмам в конце статьи.

Логистическая регрессия

Не путайте эти алгоритмы классификации с методами регрессии из-за использования «регрессии» в названии. Логистическая регрессия выполняет двоичную классификацию, поэтому маркированные выходы являются двоичными. Определим P (y = 1 | x) как условную вероятность того, что выход y равен 1 при условии, что задан входной вектор-функция x. Коэффициенты w — это веса, которые модель хочет изучить.

Поскольку этот алгоритм вычисляет вероятность принадлежности к каждому классу, вы должны учитывать, насколько вероятность отличается от 0 или 1 и усредняет его по всем объектам, как это было с линейной регрессией. Такая функция потерь представляет собой среднее значение кросс-энтропии:

Не паникуйте! Я облегчу это для вас. Позвольте y иметь правильные ответы: 0 или 1, y_pred — предсказанные ответы. Если y равно 0, то первое слагаемое при сумме равно 0, а второе меньше, чем мы предсказали y_pred до 0 согласно свойствам логарифма. Аналогично, в случае, когда y равно 1.

Что хорошего в логистической регрессии? Он принимает линейную комбинацию функций и применяет к ней нелинейную функцию (сигмовидную), поэтому это очень маленький экземпляр нейронной сети!

Деревья принятия решений

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

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

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

Метод k-средних

Иногда, вам ничего не известно о свойствах, и ваша цель — назначать свойства в соответствии с особенностями объектов. Это называется задачей кластеризации.

Предположим, вы хотите разделить все объекты данных на k кластеров. Вам нужно выбрать случайные k точек из ваших данных и назвать их центрами кластеров. Кластеры других объектов определяются ближайшим центром кластера. Затем центры кластеров преобразуются и процесс повторяется до сходимости.

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

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

Анализ основных компонентов

Вы когда-нибудь готовились к трудному экзамену ночью или даже утром, прямо перед тем, как он начнется? Невозможно запомнить всю необходимую информацию, но вы хотите максимизировать информацию, которую вы можете запомнить за доступное время; например, сначала изучить теоремы, которые встречаются во многих экзаменах и т. д.

Анализ основных компонентов основан на этой же идее. Этот алгоритм обеспечивает уменьшение размерности. Иногда у вас есть широкий спектр функций, которые, вероятно, сильно коррелированы между собой, а модели могут легко перегружать огромные объемы данных. Затем вы можете применить данный алгоритм.

Удивительно, но эти векторы являются собственными векторами корреляционной матрицы признаков из набора данных.

Теперь алгоритм понятен:

  • Мы вычисляем корреляционную матрицу столбцов признаков и находим собственные векторы этой матрицы.
  • Мы берем эти многомерные вектора и вычисляем проекцию всех признаков на них.

Новые функции — координаты от проекции, а их число зависит от количества собственных векторов, на которых вы рассчитываете проекцию.

Нейронные сети

Я уже упоминал о нейронных сетях, когда мы говорили о логистической регрессии. Существует множество различных архитектур, которые ценны в конкретных задачах. Чаще всего это диапазон слоев или компонентов с линейными соединениями между ними и следующими нелинейностями.

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

Для работы с текстами и последовательностями вам лучше выбрать рекуррентные нейронные сети (англ. Recurrent neural network ; RNN ). RNN содержат модули долгой краткосрочной памяти или управляемых рекуррентных нейронов и могут работать с данными, для которых мы заранее знаем размер. Одним из наиболее известных приложений RNN является машинный перевод.

Заключение

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

  • Линейная регрессия и линейный классификатор : несмотря на кажущуюся простоту, они очень полезны при огромном количестве функций, где лучшие алгоритмы страдают от переобучения.
  • Логистическая регрессия : простейший нелинейный классификатор с линейной комбинацией параметров и нелинейной функцией (сигмоид) для двоичной классификации.
  • Деревья принятия решений : часто подобны процессу принятия решений людьми и легко интерпретируются, но чаще всего используются в таких композициях, как случайный рост леса или градиента.
  • Метод k-средних : более примитивен, но очень простой в понимании алгоритм, который может быть идеальным в качестве основы во множестве задач.
  • Анализ основных компонентов : отличный выбор для уменьшения размерности вашего пространства с минимальной потерей информации.
  • Нейронные сети : новая эра алгоритмов машинного обучения, которые могут применяться для многих задач, но их обучение требует огромной вычислительной сложности.

Рекомендуемая литература

Статья написана: Daniil Korbut | Октябрь 27, 2017г.

Руководство по машинному обучению для новичков

Простое объяснение с примерами из математики, программирования и реальной жизни.

Для кого это руководство?

  • Для технических специалистов, которые хотят повторить основы машинного обучения.
  • Для тех, кто не смыслит в технике, но хочет ознакомиться с машинным обучением и не знает, с чего начать.
  • Для тех, кто считает, что машинное обучение “тяжело” освоить.

Почему именно машинное обучение?

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

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

Подготовка к изучению машинного обучения

Чтобы разобраться в представленных концепциях, нужно обладать следующими знаниями:

  • Углубленные знания начального уровня алгебры: Вы должны разбираться в таких понятиях, как переменные, коэффициенты, линейные уравнения, исчисления, а также графики.
  • Владение основами программирования, а также опыт написания кода на Python: Опыт в машинном обучении не требуется, однако вы должны уметь читать и писать код Python с базовыми конструкциями, такими как определения функций, списки, словари, циклы и условные выражения.
  • Базовые знания следующих библиотек Python:
  • NumPy
  • Pandas
  • SciKit-Learn
  • SciPy
  • Matplotlib (и/или Seaborn )

Семантическое дерево:

Искусственный интеллект — это наука об агентах, которые воспринимают окружающий мир, формируют планы и принимают решения для достижения целей.

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

Что такое машинное обучение?

Артур Сэмюэл описывает машинное обучение как: “Область науки, благодаря которой компьютеры могут обучаться без явного программирования.” Это старое и неформальное определение, которое на данный момент почти потеряло смысл.

Том Митчелл дает более современное определение: “Компьютерная программа обучается на основе опыта E по отношению к некоторому классу задач T и меры качества P, если качество решения задач из T, измеренное на основе P, улучшается с приобретением опыта E.”

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

Алгоритмы машинного обучения относятся к следующим категориям: обучение с учителем (Supervised Learning), обучение без учителя (Unsupervised Learning) и обучение с подкреплением (Reinforcement Learning) .

  • Supervised Learning: Алгоритм обучения с учителем принимает маркированные данные и создает модель, которая выполняет предсказания, предоставляя новые данные. Это могут быть как задачи классификации , так и задачи регрессии .
  • Unsupervised Learning: Приобучении без учителя предоставляются непомеченные и неклассифицированные данные, в которых нужно найти закономерности и создать структуру данных для получения значения. Формы обучения без учителя: кластеризация ( clustering) и уменьшение размерности ( dimensionality reduction) .
  • Reinforcement Learning: Обучение с подкреплением использует систему поощрений и метод проб и ошибок в целях максимизации долгосрочного поощрения.

Roadmap для начала изучения машинного обучения:

  • Начать стоит с изучения/повторения линейной алгебры. MIT предоставляет отличный open course по линейной алгебре, с помощью которого можно ознакомиться с ключевыми концепциями. Особое внимание следует уделить изучению векторов, умножению матриц, детерминантам и спектральному разложению матрицы — они играют важную роль в работе алгоритмов машинного обучения.
  • Затем уделите внимание высшей математике. Изучите производные и способы их использования для оптимизации. Обязательно разберите все темы в Single Variable Calculus и (как минимум) первые два раздела Multivariable Calculus.
  • Изучите библиотеки Python, используемые в машинном обучении, такие как Numpy, Pandas, Matplotlib и SKLearn. Разобраться в машинном обучении без этих ‘инструментов’ будет довольно сложно.
  • Начните программировать! Советую реализовать все алгоритмы из scratch вPython, прежде чем использовать готовые модели в SciKit — Learn, чтобы разобраться, как все это работает. Я делал алгоритмы в следующем порядке по возрастанию сложности:
  • Линейная регрессия (Linear Regression)
  • Логистическая регрессия (Logistic Regression)
  • Наивный байесовский классификатор (Naive Bayes Classifier)
  • Метод k-ближайших соседей (K — Nearest Neighbors — KNN)
  • Метод k-средних (K — Means)
  • Метод опорных векторов (Support Vector Machine — SVM)
  • Дерево принятия решений (Decision Trees)
  • Random Forests
  • Gradient Boosting

Roadmap для реализации алгоритма:

  • Соберите данные для работы. В интернете доступны миллионы наборов данных, удовлетворяющих даже самым причудливым потребностям. Kaggle и UCI — отличные ресурсы для просмотра наборов данных. Вы также можете сгенерировать собственные данные.
  • Выберите алгоритм(ы). После сбора данных можно начать работу над алгоритмами. На изображении показан приблизительный ориентир. (Из документации SKLearn)

На этой стадии следует пройтись по краткой теории каждого алгоритма, которые я разместил на Github с каждой реализацией.

3. Визуализируйте данные! В Python есть множество библиотек, таких как Matplotlib и Seaborn, с помощью которых можно выстроить данные в график и получить финальный результат. Таким образом, вам будет легче разобраться в данных и в том, какие действия они выполняют. (и конечно, сделать крутую модель!)

4. Настройте алгоритм. Все реализованные модели обладают множеством кнопок и рычагов, известными как гиперпараметры. Коэффициент скорости обучения, значение k и т. д. — все это можно изменить, чтобы получить наилучшую из возможных моделей.

5. Оцените модель. БиблиотекаPython SKLearn предоставляет множество инструментов для анализа модели и проверки показателей, таких как правильность, показатель f1, точность и т. д.

Примечания:

  • Ознакомившись с несколькими алгоритмами и концепциями, попробуйте выполнить один или несколько простых и краткосрочных проектов (для начала).
  • Не бойтесь совершать ошибки. По-началу вы будете тратить большую часть времени на попытки разобраться в математике и причинах возникновения ошибок. Однако терпение — ключ к успеху.
  • Маленькие модели — основа для изучения чего-то большего. Пробуйте все подряд и тогда у вас получится создать лучшую модель.
  • Наилучший способ изучить библиотеки Python — пройти Datacamp courses или начать с изучения документации.

Все вышеописанное можно найти на Github в репозитории Machine-Learning . Все алгоритмы систематизированы, как с реализациями из scratch, так и с использованием SciKit-Learn. Также представлены используемые наборы данных и краткая теория о работе алгоритмов вместе с примерами из реальной жизни.

Читать еще:  Как обучиться программе excel самостоятельно
Ссылка на основную публикацию
Adblock
detector