![image](https://habrastorage.org/getpro/geektimes/post_images/558/bab/146/558bab146af81729ecc2d2f16317a5f5.jpg)
Недавно моя тётя разослала своим коллегам емейлы с темой «задачка по математике! Какой правильный ответ?» В письме была обманчиво простая головоломка:
1 + 4 = 5
2 + 5 = 12
3 + 6 = 21
8 + 11 =?
Для неё решение был очевидным. Но её коллеги решили, что правильным было их решение – не совпавшее с её решением. Проблема была с одним из их ответов, или с самой головоломкой?
Моя тётя и её коллеги наткнулись на фундаментальную проблему машинного обучения, дисциплины, изучающей обучающиеся компьютеры. Практически всё обучение, которое мы ждём от компьютеров – и которым занимаемся сами – состоит в сокращении информации до основных закономерностей, на основании которых можно делать выводы о чём-то неизвестном. И её загадка была такой же.
Для человека задача состоит в поиске какой бы то ни было закономерности. Конечно, наша интуиция ограничивает спектр наших догадок. Но у компьютеров нет интуиции. С точки зрения компьютера сложность в распознавании закономерностей – в их избытке: если существует бесконечное количество одинаково правомерных закономерностей, из-за чего какие-то оказываются правильными, а какие-то – нет?
И эта проблема совсем недавно перешла в практическую плоскость. До 1990-х системы ИИ вообще редко занимались машинным обучением. Допустим, шахматный компьютер Deep Thought, предшественник Deep Blue, не научился шахматам методом проб и ошибок. Вместо этого шахматные гроссмейстеры и волшебники программирования тщательно создавали правила, по которым можно было разбираться в том, хорошая или плохая получается шахматная позиция. Такая скрупулёзная ручная подстройка была типичной для «экспертных систем» того времени.
Чтобы взяться за загадку моей тёти при помощи подхода экспертных систем, необходимо, чтобы человек, прищурившись, взглянул на первые три ряда примеров и заметил в них следующую закономерность:
1 * (4 + 1) = 5
2 * (5 + 1) = 12
3 * (6 + 1) = 21
Затем человек дал бы компьютеру команду следовать закономерности x * (y + 1) = z. Применив это правило к последнему результату, мы получим решение – 96.
Несмотря на ранние успехи экспертных систем, ручной труд, требовавшийся для их разработки, подстройки и обновления, стал неподъёмным. Вместо этого исследователи обратили внимание на разработку машин, способных распознавать закономерности самостоятельно. Программа могла, к примеру, изучить тысячу фотографий или рыночных транзакций и вывести из них статистические сигналы, соответствующие лицу на фото или всплеску цен на рынке. Такой подход быстро стал доминирующим, и с тех пор лежит в основе всего, от автоматической сортировки почты и фильтрования спама до обнаружения мошенничества с кредитными картами.
Но, несмотря на все успехи, эти системы МО требуют наличия программиста где-то в процессе. Возьмём в качестве примера загадку моей тёти. Мы предположили, что в каждой строке есть три значимых компонента (три числа в строке). Но в ней существует потенциальный четвёртый элемент – результат с предыдущей строки. Если это свойство строки допустимо, тогда проявляется другая правдоподобная закономерность:
0 + 1 + 4 = 5
5 + 2 + 5 = 12
12 + 3 + 6 = 21
По этой логике итоговый ответ должен быть равен 40.
Какая же закономерность верна? Естественно, обе – и ни одна из них. Всё зависит от того, какие закономерности допустимы. Можно, например, построить закономерность, взяв первое число, умножив на второй, добавив одну пятую от суммы предыдущего ответа и тройки, и округлить всё это до ближайшего целого (очень странно, но работает). А если мы разрешим использовать свойства, связанные с внешним видом цифр, возможно, найдётся последовательность, связанная с засечками и линиями. Поиск закономерностей зависит от предположений наблюдателя.
То же верно и для МО. Даже когда машины обучают сами себя, предпочтительные закономерности выбираются людьми: должно ли ПО для распознавания лиц содержать явные правила если/то, или оно должно расценивать каждую особенность как дополнительное доказательство в пользу или против каждого возможного человека, которому принадлежит лицо? Какие особенности изображения должно обрабатывать ПО? Нужно ли ей работать с отдельными пикселями? А может, с гранями между светлыми и тёмными участками? Выбор подобных вариантов ограничивает то, какие закономерности система сочтёт вероятными или даже возможными. Поиск этой идеальной комбинации и стал новой работой специалистов по МО.
![image](https://habrastorage.org/getpro/geektimes/post_images/2ba/587/e27/2ba587e27cd0c28e05cb4cdadefba409.png)
Но процесс автоматизации на этом не остановился. Точно так же, как когда-то программисты замучались писать правила работы, теперь они с неохотой отнеслись к разработке новых возможностей. «Разве не было бы здорово, если бы компьютер сам смог разобраться, какие особенности ему нужны?» Так что они разработали нейросети с глубинным обучением – технологию МО, способную самостоятельно делать выводы о свойствах высокого уровня на основе более простой информации. Скормите нейросети набор пикселей, и она научится учитывать края, кривые, текстуры – и всё это без прямых инструкций.
И что же, программисты лишились работы из-за Одного Алгоритма, Чтоб Править Всеми?
Пока нет. Нейросети пока ещё не могут идеально подойти к любым задачам. Даже в лучших случаях их приходится подстраивать. Нейросеть состоит из слоёв «нейронов», каждый из которых выполняет подсчёты на основе входных данных и выдаёт результат следующему слою. Но сколько понадобится нейронов и сколько слоёв? Должен ли каждый нейрон принимать входные данные с каждого нейрона предыдущего уровня, или некоторые нейроны должны быть более избирательными? Какое преобразование должен проводить каждый нейрон над входными данными для выдачи результата? И так далее.
Эти вопросы ограничивают попытки применения нейросетей к новым задачам; нейросеть, прекрасно распознающая лица, совершенно неспособна на автоматический перевод. И снова выбранные человеком элементы конструкции явно подталкивают сеть к определённым закономерностям, уводя её от других. Знающий человек понимает, что не все закономерности созданы равными. Программисты пока не останутся без работы.
Конечно, следующим логичным шагом будут нейросети, самостоятельно догадывающиеся о том, сколько нужно включать нейронов, какие связи использовать, и т.д. Исследовательские проекты на эту тему ведутся уже много лет.
Как далеко это может зайти? Научатся ли машины работать самостоятельно настолько хорошо, что внешняя подстройка превратится в старомодную реликвию? В теории, можно представить себе идеального универсального ученика – такого, который сам может решать всё для себя, и всегда выбирает наилучшую схему для выбранной задачи.
Но в 1996-м специалист по информатике Дэвид Уолперт доказал невозможность существования такого ученика. В его знаменитых «теоремах об отсутствии бесплатных обедов» он показал, что для любой закономерности, которой ученик хорошо обучается, существует закономерность, которой он будет обучаться ужасно. Это возвращает нас к загадке моей тёти – к бесконечному количеству закономерностей, которое может возникать из конечных данных. Выбор обучающего алгоритма означает выбор закономерностей, с которыми машина будет справляться плохо. Возможно, все задачи, к примеру, распознавания образов, в итоге попадут в один всеобъемлющий алгоритм. Но ни один обучающийся алгоритм не может одинаково хорошо обучаться всему.
Это делает машинное обучение неожиданно похожим на человеческий мозг. Хотя мы любим считать себя умными, но наш мозг тоже не учится идеально. Каждая часть мозга тщательно настроена эволюцией на распознавание определённых закономерностей – будь это то, что мы видим, язык, который мы слышим, или поведение физических объектов. Но с поиском закономерностей на фондовом рынке мы справляемся уже не так хорошо; тут машины нас обыгрывают.
История машинного обучения насчитывает много закономерностей. Но наиболее вероятной будет следующая: мы будем обучать машины обучаться ещё много лет.