Так как же информатики могут помочь медикам с проблемой диагностики туберкулеза у пациентов с ВИЧ? Да и со многими другими сложными задачками? Ответ прост: машинное обучение.
На моей старой работе на двери кабинета висела табличка «Отдел машинного обучения». Регулярно кто-нибудь мимопроходящий спрашивал, что за машины и чему их тут учат. Мало кто понимал, чем занимаются люди за этой дверью.
Давайте остановимся ненадолго и разберёмся с тем, что такое это "машинное обучение".
Знакомьтесь, это юпитерианин Йжун, и он никогда в жизни не видел ни кошек, ни собак. Вы внезапно встретились с ним при подлёте к Марсу, и вам просто приспичило рассказать новому другу, чем кошки отличаются на вид от собак.
- У собаки четыре ноги, - говорите вы.
- А у кошки? - уточняет Йжун.
- Тоже четыре. И ещё есть хвост. Хотя и у собаки есть хвост. Но вот шерсть, шерсть у кошки другая, чем у собаки!
- Она другого цвета? Она короче или длиннее?
- Да нет... - теряетесь вы. - и кошки, и собаки бывают разного цвета и с разной длиной шерсти... И глаз у них по два, и носов по одному...
- Тогда как же вы различаете их?! - удивлённо поднимает к потолку шаттла свой хвостовой вентилятор Йжун (если вы не знали, то именно так выражают удивление жители северных равнин Юпитера).
Растерялись? (Любые идеи, кстати, жду в комментариях, такая задачка со звёздочкой:))
Мы с детства привыкли видеть собак и кошек, так что для нашего разума нет необходимости иметь чёткое определение.
После такой вводной нам будет совсем просто сформулировать суть машинного обучения: нужно научить компьютер решать такую задачу, которую человек не может формализовать.
Что для этого нужно дать компьютеру? Да то же самое, что дали когда-то нам с вами:
- примеры (картинка с кошкой, картинка с собакой, еще картинка с собакой..) и
- ответы (или «разметку») (вот это кошка, а это собака).
Существует несколько основных подходов к решению дальнейшей задачи.
1⃣ показать «машине» (дальше будем говорить «модели») много разных примеров, по которым известны правильные ответы (картинка с кошкой - это «кошка», картинка с собакой - это «собака»).
Что значит «показать»?
Иногда это описать в виде признаков (длина хвоста - 20 см, ширина уха - 5 см, глаза - 2 шт... - это «собака»). А иногда просто подать изображение животного. Или видеоряд с животными. Или вообще записи их голосов. Все зависит от задачи, которую нам надо решить.
Модель посмотрит на них («обучится») и, когда в будущем увидит нового зверя, сможет «сказать», на кого он больше похож, на кошку или на собаку.
Такой подход называется «обучением с учителем».
Его главный минус в том, что сначала кто-то должен долго и нудно «размечать» выборку - сделать пометки на каждой кошке, что она кошка, и соответственно такое же для собак.
А что если такой разметки нет? Посмотрим на другие подходы.
2⃣ Пусть модель вообще не знает ответов: ей ни про кого из зверей неизвестно, кто это.
Подадим в неё примеры и скажем: все это зверьё ДОЛЖНО разделяться на две группы.
Модель посмотрит внимательно и раскидает полученные примеры в две разные кучи так, чтобы, по ее мнению, в каждой куче они были больше похожи друг на друга, чем любой из них похож на любой пример из другой кучи.
Это называется «обучением без учителя».
Какой тут главный минус: вполне может быть, что в разных группах окажутся не кошки и собаки. Это случилось потому, что параметр, по которому модель разделила зверей, будет, например, размер животного. Тогда овчарки и мейн-куны будут «лежать» в одной кучке, а пекинесы и сфинксы в другой. А ведь мы совсем не этого хотели.
Хммм... А можно ли обьединить два метода выше, вдруг, получится что-то ещё интереснее?
Можно!
И нам всем хорошо известен третий метод из этого списка: метод «пряника». Или «обучение с подкреплением».
3⃣ В данном методе мы назначаем "награду", которую получит модель, если как можно лучше выполнит задачу. Чем лучше работа, тем выше награда - больше размер "пряника". Что может быть таким пряником? Бонусы за каждый правильно угаданный ответ например. Чем больше угадали правильно, тем больше получили бонусов. Если же мы, например, обучаем робота есть кашу ложкой, то награда будет тем больше, чем точнее он будет подносить ложку ко рту и чем меньше при этом проливать кашу.
Чтобы провернуть это, нам надо взять модель, которая совсем не знает ответов, и сказать ей "учись!". Конечно, в результате модель отдаст совершенно непригодную несуразицу (а в случае с роботом поднесет уже пустую ложку к уху или к носу)
Для нашей задачи с кошками и собаками мы получим что-то вроде:
картинка с собакой - «кошка»,
картинка с кошкой - «собака»,
картинка с собакой - «собака»...
Видим, что где-то она угадала, а где-то нет.
Выберем несколько примеров из всей массы примеров, с которыми работала модель. Посмотрим глазами на них и на те ответы, которые дала по ним модель. Вот выше, только про одну собаку из трех примеров она ответила верно. Теперь возьмем маленький пряничек и "вознаградим" им модель за этот правильный ответ.
Модель обрадуется награде и начнет учиться заново. Она молодчина и учтет опыт предыдущего обучения: повторит те шаги, что привели ее к награде, но еще и поэкспериментирует, чтобы получить результат лучше.
После второго этапа обучения мы снова посмотрим на новую случайную группу примеров и ответов по ним. Снова сделаем выводы и вознаградим модель "пряником". Ожидаем, что теперь она справилась с задачей чуть лучше, и пряник ей достался чуть больше.
Так и повторяем до тех пор, пока наша модель не заработает как можно большую награду. А мы при этом получим от неё как можно больше правильных ответов.
И вуаля - самая сложная и неподдающаяся формализации проблема решена!
Любую задачу в мире можно представить как задачу машинного обучения. Звук, текст, фото, изображение, показания датчиков - все подвластно этой магии. Биология, геология, экология, экономика, медицина, физика... Назовите любую область, и я постараюсь ответить вам, какие задачи в ней уже сегодня решают с помощью машинного обучения. Разве не прекрасно?
Не можете выбрать, какой областью заниматься в жизни? Займитесь математикой. С ней и с машинным обучением в кармане вам станут открыты двери в любую сферу жизни и науки!
Не понравилось в одной сфере? Меняйте ее, ваши знания и навыки останутся актуальны.
Ну а теперь, с пониманием сути машинного обучения, можно плавно перейти к тому, как мы применяли его в конкретной задаче предсказания диагноза. Забегая вперёд, скажу, что метод номер 2 (обучение без учителя) помог в изучении данных, с которыми предстояло работать, а метод номер 1 (обучение с учителем) как раз и был использован для решения самой задачи.
Не переключайтесь:)