Основы машинного обучения простым языком
В диалоге об искусственном интеллекте трудно найти середину: СМИ пишут о сенсациях, даже когда разработка не заслуживает внимания, а научная литература порой сбивает с толку своим языком самых мотивированных исследователей. На деле всё гораздо проще. Чтобы в общих чертах понять принцип работы ИИ, рядовому пользователю нужно вспомнить школьный курс математики.
ИИ — любой алгоритм, подражающий человеческому интеллекту, будь то бот в видеоигре или движок 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, не так ли?
Тут-то мы и выходим за пределы человеческих возможностей. Вместо того чтобы самостоятельно высчитывать, на какое нечто нужно помножить переменные для точного диагноза, мы ставим задачу алгоритму. Вот, собственно, что такое машинное обучение.