SkillGridИзучай computer science на практике

Прямая линия через точки

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

14 мин · 45 XP

В прошлом уроке ты увидел, что такое модель. Этот урок открывает её крышку. Мы берём самую простую модель, прямую линию, потому что в ней каждое число можно проследить руками.

study hours -> exam score

100 |                                    *
 90 |                              *
 80 |                        *
 70 |                  *
 60 |            *
 50 |      *
 40 |  *
    +----------------------------------------
      1   2   3   4   5   6   7   8   9

six pupils, one dot eachШесть учеников, по точке на каждого: по горизонтали часы подготовки, по вертикали балл.

Посмотри на эти точки. Больше часов подготовки — выше балл, примерно, и слово «примерно» здесь главное. Точки не лежат ни на какой идеальной линии. Модель здесь — это линия, которая проходит настолько близко ко всем шести точкам, насколько это возможно для одной прямой. Когда признаков не один, а несколько, та же фраза превращается в плоскость или в поверхность в большем числе измерений, чем ты можешь представить. Больше ничего не меняется: признаки на входе, одно число на выходе.

Study hoursModelPredicted scorex = 6multiply by the weightadd the starting valuescore = 12 + 9 x 6 = 66the same two numbers answer every x

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

score = start + weight * hours

try 1:  score = 30 + 6 * hours
   4 h -> 54    real 71    miss 17
   8 h -> 78    real 86    miss 8

try 2:  score = 15 + 10 * hours
   4 h -> 55    real 71    miss 16
   8 h -> 95    real 86    miss 9

try 3:  score = 40 + 5 * hours
   4 h -> 60    real 71    miss 11
   8 h -> 80    real 86    miss 6Три линии-кандидата и то, насколько каждая догадка расходится с настоящими баллами.

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

score = 40 + 5 * hours

+-------------+-------+--------+-------+--------+
| study_hours | score | guess  | error | square |
+-------------+-------+--------+-------+--------+
| 3           | 55    | 55     | 0     | 0      |
| 4           | 71    | 60     | 11    | 121    |
| 5           | 70    | 65     | 5     | 25     |
| 7           | 86    | 75     | 11    | 121    |
+-------------+-------+--------+-------+--------+

sum of squares: 0 + 121 + 25 + 121 = 267Одна линия, четыре строки и цена, которую она платит за свою неправоту.

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

Практика

  1. Модель A предсказывает балл как 40 + 5 умножить на часы. Модель B — как 10 + 12 умножить на часы. Ученик готовился 5 часов и получил 66. Какая модель ближе и что означает её вес?

    Подсказки
    • Один лишний час подготовки должен сдвигать предсказание ровно на вес и ни на что больше.
    • Сравни предсказания обеих моделей при 6 часах, прежде чем решать.
  2. Расставь шаги цикла обучения линейной модели в правильном порядке.

    1. 1Предсказать метку для каждой строки обучающей таблицы
    2. 2Сдвинуть оба числа в сторону, где суммарная ошибка меньше
    3. 3Сравнить каждое предсказание с настоящей меткой и сложить квадраты промахов
    4. 4Начать с каких угодно веса и начального значения
    5. 5Повторять, пока суммарная ошибка перестанет уменьшаться
    Подсказки
    • Обучение — это не что иное, как догадка, измерение промаха и исправление догадки.
    • Нельзя измерить ошибку модели, которая ещё не сделала ни одного предсказания.
  3. Маленький магазин хочет предсказывать завтрашние продажи линейной моделью, а признаки у неё — день недели и температура на улице. Что получится?

    Подсказки
    • У магазина есть одно число на каждый день; линия — самое простое описание этого числа.
    • Часть этих чисел вообще не движется вместе с днём недели.