Модуль: Введение в нейронные сети


Зачем нужны нейронные сети


Две задачи, между которыми проходит граница

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

Считается в одну строчку: 4 · 50 + 100 = 300 рублей. Правило известно целиком, программа пишется за минуту.

Вторая задача. За сколько минут курьер довезёт этот заказ?

Опытный диспетчер отвечает почти точно. Но выписать своё правило он не может: он скажет, что важно расстояние и важны пробки, а вот сколько именно минут добавляет один светофор — не скажет никто.

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

Что доступно нам, когда правила нет

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

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

Это и есть ход, на котором держится всё дальнейшее.

Обучение на данных — подход, при котором правило не пишут вручную, а подбирают по примерам вида «вход и верный ответ» так, чтобы на этих примерах оно ошибалось как можно реже.

Работает он не всегда. Нужны три условия сразу:

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

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

Где эта задача решается за деньги

Строчка «привезём за 25 минут» в приложении доставки — не таймер и не среднее по городу. Это предсказание модели, которое пересчитывают заново каждые несколько секунд для каждого заказа.

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

Задача, которая пройдёт через всю главу

Возьмём три числа про заказ:

  • сколько километров до адреса;
  • сколько светофоров на маршруте;
  • сколько курьеров сейчас свободно рядом с точкой выдачи.

На выходе одно число — минуты.

Задача нарочно маленькая. На трёх признаках видно каждое действие, а на трёхсот — уже нет.

Что умеет программа, которую мы разберём позже

Мы придумали двести заказов и сами посчитали для каждого время по известному нам правилу. Программе показали только сами заказы и получившееся время. Правило она не видела.

Таблица 1. Заданное правило и найденное программой

вес расстояниявес светофороввес курьеровсвободный член
правило, по которому считали мы31.5−0.58
что нашла программа по заказам3.01.48−0.497.97

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

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

Как именно программа подобрала эти числа, в этой главе не объясняется. Для ответа нужны две вещи: способ измерять промах одним числом — это глава 2, и способ понимать, в какую сторону двигать каждый вес — это глава 3.

А в этой главе разбирается всё остальное: как заказ превращается в числа, как из чисел получается предсказание и почему предсказание устроено именно так.