Основы машинного обучения простым языком Статьи редакции

Перевод заметки аналитика фармацевтической компании Pfizer Кайла Галлатина.

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

ИИ — любой алгоритм, подражающий человеческому интеллекту, будь то бот в видеоигре или движок AlphaGo. Машинное обучение же позволяет машине «учиться» на данных реального мира, а не действовать в рамках установленных правил. Но что же значит «учиться»?

Больше всего мне нравится такое объяснение: машинное обучение есть функция y = mx + b. Мы можем показать компьютеру входные (x) и выходные (y) данные, а он вычислит, как они связаны.

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

Итак, нам известны x и y, формула тоже дана, осталось отыскать значения m и b.

Взглянем на таблицу ниже. Чтобы получить y из x, умножим x на единицу (значение m) и прибавим единицу (значение b). Таким образом, функция принимает вид y = 1x + 1. Располагая значением x, мы сможем определить значение y для всех четырёх примеров.

Теперь нарисуем график:

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

Человеку не по силам математика, которая по силам компьютеру

Стоит помнить: чтобы отыскать качественное отношение, требуется достаточное количество информации, в противном случае оно будет слишком неточным. Если для x и y дана лишь одна точка, верная функция будет иметь единственный вид. Но в нашем примере, когда x = 1, а y = 2, функция может принимать вид y = 2x, y = x + 1, y = ([x+1]*5 – 9)⁵ + 1 и так далее.

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

Пример того, как алгоритм учится определять наиболее точную функцию

Towards Data Science

Функция y = 1x + 1 проста. Но что, если на входе не одна переменная? Что, если на y влияют x¹, x²,…x¹⁰⁰? Человек не может разом охватить миллионы точек данных и вывести функцию, описывающую результат. Эту задачу мы перекладываем на компьютеры.

На практике

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

  • y — диагноз; если y = 0, опухоль доброкачественная, если y = 1 — злокачественная;
  • x1 — радиус;
  • x2 — периметр;
  • у каждого x есть неизвестный множитель m, назовём его «нечто»;
  • b — неизвестная константа.

Как теперь выглядит наше линейное уравнение: диагноз = (нечто1*радиус) + (нечто2*периметр) + b. Похоже на формулу y = mx + b, не так ли?

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

0
22 комментария
Написать комментарий...
Денис Кулагин

Перевод очень сильно искажает и сокращает оригинальную статью, полностью меняя её ключевой посыл.

Автор оригинала говорит лишь о том, что A.I. в современном виде это чистая математика, находящая корреляцию в обучающем наборе данных между входом и выходом. Т.е. просто сложный алгоритм, не являющийся мышлением в человеческом понимании. И в своём ПРЕДЕЛЬНОМ, максимально упрощённом виде это можно представить как поиск коэффициента и свободного члена линейной функции. И действительно, линейная модель (линейная регрессия) — это самая простая модель, применяемая в машинном обучении.

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

Ответить
Развернуть ветку
Антон Антонов
И в своём ПРЕДЕЛЬНОМ, максимально упрощённом виде это можно представить как поиск коэффициента и свободного члена линейной функции.

Ок, а я правильно понимаю, что, максимальное упрощение заключается в слове "функция"? Т. е. AI определяет нефункциональную зависимость неких исходящих данных от входящих?

Ответить
Развернуть ветку
Денис Кулагин

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

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

Ответить
Развернуть ветку
Антон Антонов

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

Ответить
Развернуть ветку
Денис Кулагин

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

2. Сильно влияет, хотя современные архитектуры могут оперировать миллионами входящих переменных. Но это с учётом того, что обучение может происходить неделями на специализированных видеокартах (GPU) или специализированных нейропроцессорах (TPU).

Ответить
Развернуть ветку
Антон Антонов

По п. 2 - меня интересует быстродействие не при обучении, а при эксплуатации. например, у меня есть входящие параметры (6 степеней свободы) для трех точек. Это 18 float (я думал, 36, если текущую скорость учитывать, но вы говорите, что не надо). И необходимо, чтобы запрос выполнялся на обычном компьютере за несколько миллисекунд. Это реально?

Ответить
Развернуть ветку
Денис Кулагин

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

Ответить
Развернуть ветку
Антон Антонов

Спасибо большое.

Ответить
Развернуть ветку
Агнец невинный

http://www.bbc.co.uk/news/science-environment-47267081 ещё недавно статья вышла на BBC, суть которой сволилась к тому что алгоритмы Маш. обучения сейчас подвергаются сомнениям из-за того что как раз любые обучающие выборки бесконечно малы по сравнению с реальным миром. Что часто приводит к неверным выводам

Ответить
Развернуть ветку
Денис Кулагин

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

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

Ответить
Развернуть ветку
Антон Антонов

А в чем концептуальная разница между машинным обучением и нейросетями? нейросеть - это частный случай?

Ответить
Развернуть ветку
Антон Антонов

И вообще, было бы круто, если бы кто-нибудь смог ответить на несколько моих вопросов по ML.

Ответить
Развернуть ветку
Никита Иванов

не благодари)
https://vas3k.ru/blog/machine_learning/

Самое понятное объяснение на мой взгляд

Ответить
Развернуть ветку
Антон Антонов

У меня есть достаточно конкретные вопросы, а не просто "что это такое".

Ответить
Развернуть ветку
Никита Иванов

на этот вопрос "А в чем концептуальная разница между машинным обучением и нейросетями? нейросеть - это частный случай?"
ответ да, частный случай

Просто статья настолько исчерпывающая, что 90% такого рода вопросов явно закрывает.

А какие ещё вопросы есть, может смогу подсказать?

Ответить
Развернуть ветку
Антон Антонов

Да, статья ничего

Ответить
Развернуть ветку
Ксения Ульянова

Спасибо большое!

Ответить
Развернуть ветку
Денис Кулагин

Если говорить формально — то да, нейросети и глубокое обучение (Deep Learning) это частные случаи машинного обучения. Но на практике DL выделяют в отдельную область, т.к. она из классических подходов заимствует только основную идею способного к обучению алгоритма. Остальное — целая отдельностоящая область со своими проблемами и подходами к их решению.

Ответить
Развернуть ветку
Арсений Ахмадуллин

А как же интуиция? То необъяснимое чувство правильности выбранного решения.

Ответить
Развернуть ветку
Агнец невинный

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

Ответить
Развернуть ветку
Арсений Ахмадуллин

Да. Читал.

Ответить
Развернуть ветку
Алексей Васильков

зачастую подсознание и выдаёт решение, которое мы называем интуицией. То есть вы вроде не думали, само получилось. А на деле мозг думал, просто в автономном режиме. Это как бывает думал о какой-то проблеме, а через пару дней, когда уже вечером засыпаешь приходит хорошее решение. Главное не уснуть и записать его)

Ответить
Развернуть ветку
19 комментариев
Раскрывать всегда