Как подойти к задачам машинного обучения
Опубликовано: 2022-03-11Одной из основных задач компьютеров является автоматизация человеческих задач. Некоторые из этих задач просты и повторяются, например, «переместить X из A в B». Гораздо интереснее становится, когда компьютеру приходится принимать решения по проблемам, которые гораздо труднее формализовать. Именно здесь мы начинаем сталкиваться с основными проблемами машинного обучения.
Исторически сложилось так, что такие алгоритмы создавались учеными или экспертами, хорошо разбиравшимися в своей области, и в значительной степени основывались на правилах. С ростом вычислительной мощности и доступностью больших и разнообразных наборов данных акцент сместился в сторону более вычислительного подхода.
Большинство популярных концепций машинного обучения в наши дни связаны с нейронными сетями, и, по моему опыту, у многих людей это создало впечатление, что нейронные сети — это своего рода чудо-оружие для всех задач логического вывода. На самом деле, это довольно далеко от истины. В глазах статистика они образуют один класс подходов к выводу со своими сильными и слабыми сторонами, и от проблемы полностью зависит, будут ли нейронные сети лучшим решением или нет.
Довольно часто есть лучшие подходы.
В этой статье мы обрисуем структуру для решения проблем машинного обучения. Нет возможности слишком подробно вдаваться в конкретные модели машинного обучения, но если эта статья вызовет интерес, в последующих статьях могут быть предложены подробные решения некоторых интересных задач машинного обучения.
Однако сначала давайте приложим некоторые усилия, чтобы показать, почему вы должны быть более осмотрительными, чем автоматически думать «нейронная сеть», когда сталкиваетесь с проблемой машинного обучения.
Плюсы и минусы нейронных сетей
В нейронных сетях вывод делается через взвешенную «сеть». Веса калибруются в ходе так называемого процесса «обучения», а затем впоследствии применяются для присвоения результатов входным данным.
Как бы просто это ни звучало, все веса являются параметрами откалиброванной сети, и обычно это означает слишком много параметров, чтобы человек мог их понять.
Таким образом, мы могли бы также рассматривать нейронные сети как своего рода черный ящик для вывода, который соединяет вход с выходом, без какой-либо конкретной промежуточной модели.
Рассмотрим подробнее плюсы и минусы такого подхода.
Преимущества нейронных сетей
- Входные данные — это сами данные. Полезные результаты даже при незначительном проектировании функций или без него.
- Тренируемый навык. Без разработки признаков нет необходимости в таких трудноразвиваемых навыках, как интуиция или знание предметной области. Стандартные инструменты доступны для общих выводов.
- Точность улучшается с количеством данных. Чем больше входных данных она видит, тем лучше работает нейронная сеть.
- Может превосходить классические модели при отсутствии полной информации о модели. Подумайте, например, об общественных настроениях.
- Открытый вывод может обнаружить неизвестные закономерности. Если вы используете модель и не учитываете ее, она не обнаружит соответствующее явление. Нейронные сети могут.
Успешный пример нейронной сети: искусственный интеллект Google нашел планету, вращающуюся вокруг далекой звезды, чего не удалось сделать НАСА, путем анализа накопленных данных телескопа.
Недостатки нейронных сетей
- Они требуют много (аннотированных!) данных. Во-первых, такой объем данных не всегда доступен. Конвергенция медленная. Твердотельная модель (скажем, в физике) может быть откалибрована после нескольких наблюдений — с нейронными сетями об этом не может быть и речи. Аннотирование требует много работы, не говоря уже о том, что оно само по себе не является надежным.
- Нет информации о внутренней структуре данных. Вам интересно, на чем основан вывод? Не повезло здесь. Бывают ситуации, когда ручная корректировка данных резко улучшает вывод, но нейросеть в этом не поможет.
- Проблемы с переоснащением. Часто случается, что сеть имеет больше параметров, чем оправдывают данные, что приводит к субоптимальному выводу.
- Производительность зависит от информации. При наличии полной информации о проблеме твердотельная модель имеет тенденцию превосходить нейронную сеть.
- Есть проблемы с выборкой. Выборка всегда является деликатным вопросом, но с помощью модели можно быстро разработать понятие проблемной выборки. Нейронные сети учатся только на данных, поэтому, если они получат необъективные данные, у них будут необъективные выводы.
Пример неудачи: мой личный родственник рассказал мне о крупной корпорации (я не могу назвать), которая работала над обнаружением военной техники на аэрофотоснимках. У них были изображения, где были такие машины и другие, которых не было. Большинство снимков первого класса были сделаны в дождливый день, а второго — в солнечную погоду. В результате система научилась отличать свет от тени.
Подводя итог, нейронные сети образуют один класс методов вывода, у которых есть свои плюсы и минусы.
Тот факт, что их популярность затмевает все другие статистические методы в глазах общественности, вероятно, больше связан с корпоративным управлением, чем с чем-либо еще.
Обучение людей использованию стандартных инструментов и стандартизированных методов нейронных сетей — гораздо более предсказуемый процесс, чем поиск экспертов в предметной области и художников из разных областей. Это, однако, не меняет того факта, что использование нейронной сети для решения простой, четко определенной задачи на самом деле просто стреляет по воробью из пушки: для этого требуется много данных, требуется много работы по аннотации, а взамен может просто хуже по сравнению с твердотельной моделью. Не лучший пакет.
Тем не менее, огромная сила заключается в том, что они «демократизируют» статистические знания. Когда решение для вывода на основе нейронной сети рассматривается как простой инструмент программирования, оно может помочь даже тем, кто не чувствует себя комфортно со сложными алгоритмами. Таким образом, в настоящее время неизбежно создается множество вещей, которые в противном случае не существовали бы, если бы мы могли оперировать только сложными моделями.

Подход к проблемам машинного обучения
При подходе к проблемам машинного обучения вам необходимо пройти следующие шаги:
- Установка критериев приемлемости
- Очистка ваших данных и максимизация информационного содержания
- Выбор наиболее оптимального подхода к выводу
- Тренируйтесь, тестируйте, повторяйте
Давайте посмотрим на эти предметы в деталях.
Установка критериев приемлемости
Вы должны иметь представление о точности вашей цели как можно скорее, насколько это возможно. Это будет цель, к которой вы будете стремиться.
Очистка ваших данных и максимизация их информационного содержания
Это самый важный шаг. Прежде всего, в ваших данных не должно быть (или мало) ошибок. Очистка его от них является важным первым шагом. Замените отсутствующие значения, попытайтесь определить шаблоны, которые явно являются поддельными, устраните дубликаты и любые другие аномалии, которые вы можете заметить.
Что касается информации, то если ваши данные очень информативны (в линейном смысле), то практически любой метод вывода даст вам хорошие результаты. Если требуемой информации там нет, результатом будет шум. Максимизация информации означает в первую очередь поиск любых полезных нелинейных отношений в данных и их линеаризацию. Если это значительно улучшит входные данные, отлично. Если нет, то может потребоваться добавить больше переменных. Если все это не даст результатов, может пострадать точность прицеливания.
Если повезет, будут отдельные переменные, которые будут полезны. Вы можете определить полезные переменные, если вы, например, нанесете их на график относительно целевой переменной (переменных) обучения и обнаружите, что график похож на функцию (т. е. узкий диапазон на входе соответствует узкому диапазону на выходе). Затем эту переменную можно линеаризовать — например, если она представляет собой параболу, вычтите некоторые значения и извлеките квадратный корень.
Для шумных переменных — узкий диапазон входных данных соответствует широкому диапазону выходных данных — мы можем попробовать объединить их с другими переменными.
Чтобы получить представление о точности, вы можете измерить условные вероятности класса для каждой из ваших переменных (для задач классификации) или применить какую-нибудь очень простую форму регрессии, например линейную регрессию (для задач прогнозирования). Если информативность входных данных улучшится, то улучшится и ваш вывод, и вы просто не хотите тратить слишком много времени на этом этапе на калибровку модели, когда данные еще не готовы. Поэтому делайте тестирование максимально простым.
Выбор наиболее оптимального подхода к выводу
Как только ваши данные придут в приличную форму, вы можете перейти к методу логического вывода (данные могут быть отшлифованы позже, если это необходимо).
Стоит ли использовать модель? Что ж, если у вас есть веские основания полагать, что вы можете построить хорошую модель для этой задачи, то вам, вероятно, следует это сделать. Если вы так не думаете, но есть достаточно данных с хорошими аннотациями, то вы можете обойтись без помощи нейронной сети. Однако в практических приложениях машинного обучения для этого часто недостаточно данных.
Точность игры против укрытия часто очень окупается. Гибридные подходы обычно вполне хороши. Предположим, что данные таковы, что вы можете получить почти 100% точность на 80% с помощью простой модели? Это означает, что вы можете быстро продемонстрировать результаты, и если ваша система может определить, когда она работает на 80% дружественной территории, то вы в основном решили большую часть проблемы. Ваш клиент может быть еще не полностью доволен, но это быстро завоюет его доверие. И ничто не мешает вам сделать нечто подобное и на остальных данных: при разумных усилиях теперь вы покрываете, скажем, 92% данных с точностью 97%. Правда, по остальным данным, это подбрасывание монеты, но кое-что полезное вы уже произвели.
Для большинства практических приложений это очень полезно. Скажем, вы занимаетесь кредитованием и хотите решить, кому дать кредит, и все, что вы знаете, это то, что на 70% клиентов ваш алгоритм очень точен. Отлично — верно, остальные 30% ваших заявителей потребуют дополнительной обработки, но 70% можно полностью автоматизировать. Или: предположим, вы пытаетесь автоматизировать работу оператора колл-центра, вы можете хорошо (быстро и грязно) справиться только с самыми простыми задачами, но эти задачи покрывают 50% звонков? Отлично, колл-центр экономит деньги, если он может надежно автоматизировать 50% своих звонков.
Подводя итог: если данные недостаточно информативны или проблема слишком сложна для решения в целом, подумайте нестандартно. Определите полезные и легко решаемые подзадачи, пока у вас не появится идея получше.
Как только ваша система будет готова, изучите, протестируйте и зацикливайте ее, пока не будете довольны результатами.
Тренируйтесь, тестируйте, повторяйте
После предыдущих шагов интересного осталось немного. У вас есть данные, у вас есть метод машинного обучения, поэтому пришло время извлечь параметры с помощью обучения, а затем проверить вывод на тестовом наборе. Литература предполагает, что 70% записей следует использовать для обучения и 30% для тестирования.
Если вы довольны результатами, задача выполнена. Но, скорее всего, во время процедуры у вас появились новые идеи, которые могут помочь вам повысить точность. Возможно, вам нужно больше данных? Или просто дополнительная очистка данных? Или другая модель? В любом случае, скорее всего, вы будете заняты какое-то время.
Так что удачи и приятной работы!
- Машины и доверие: как смягчить предвзятость ИИ
- Звезды перестроены: улучшение рейтинговой системы IMDb