March 27, 2019

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

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

ИИ — любой алгоритм, подражающий человеческому интеллекту, будь то бот в видеоигре или движок 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 и так далее.

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

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

На практике

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

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

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

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