Нетехническое введение для начинающих

В настоящее время термины «искусственный интеллект», «машинное обучение» и «нейронные сети» используются нечасто. Несмотря на всю шумиху вокруг него в текущих новостях, машинное обучение часто хвалят как серебряную пулю - волшебный метод, который может решить ЛЮБУЮ проблему, какой бы сложной она ни была.

Что ж, как вы, наверное, ожидали, это не совсем так. Верно то, что современные методы машинного обучения (ML) способны выполнять задачи, которые раньше казались невозможными. Более того, по сравнению с решениями, которые у нас были для определенных задач, современные методы машинного обучения также оказались лучше почти во всех отношениях: они быстрее развиваются, более надежны и часто работают быстрее. Однако эти методы имеют свои ограничения, которые делают их более подходящими для определенных приложений. Таким образом, несмотря на то, что эта область постоянно развивается, и сотни исследователей по всему миру расширяют новейшие разработки, важно понимать основы того, как они работают, чтобы мы могли применять их для решения тех проблем, в которых они превосходны.

Определите термины

Давайте сначала определим 3 наиболее часто используемых термина «модное слово» в этой отрасли:

Искусственный интеллект - Теория и разработка компьютерных систем, способных выполнять задачи, которые обычно требуют человеческого интеллекта [1]

Машинное обучение. Машинное обучение - это исследование компьютерных алгоритмов, которые автоматически улучшаются благодаря опыту [2]

Нейронная сеть / глубокое обучение - метод машинного обучения, очень слабо смоделированный на основе структуры человеческого мозга, который эффективен при изучении сложных закономерностей в данных.

Итак, машинное обучение - это разновидность искусственного интеллекта, а нейронные сети - разновидность машинного обучения. Многие новости и достижения в области искусственного интеллекта и машинного обучения связаны с нейронными сетями, поэтому эти термины используются как синонимы. За последние пару лет мы показали, что нейронные сети способны решать очень сложные, тонкие и разнообразные задачи. Например, они отлично справляются с задачами на основе изображений, такими как обнаружение и классификация объектов, определение позы человека и определение настроения человека. Они использовались для аудио задач, таких как перевод речи в текст и создание музыки. Все современные языковые службы перевода используют нейронные сети для извлечения смысла из фраз и преобразования этих фраз на разные языки. Некоторые недавние заметные достижения включают победу над чемпионами мира в настольной игре Го (игра, которая, как известно, сложна, поскольку требует долгосрочной стратегии) ​​и создание абзацев текста по предоставленным темам, которые почти неотличимы от текста, созданного человеком.

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

Поскольку большинство людей, когда говорят о машинном обучении, имеют в виду глубокое обучение и нейронные сети, в этой статье мы сосредоточимся только на этом.

Как работает нейронная сеть?

Нейронные сети могут обрабатывать сложные данные, такие как изображения, аудиоклипы и видео. Для нас, людей, мы воспринимаем эти данные нашими органами чувств в виде цветов и звуков. Однако для компьютеров изображения - это просто набор значений яркости. В результате, чтобы обработать и понять содержимое этих богатых источников данных, нам необходимо применить математические методы. Нейронные сети - это просто большие и сложные математические функции, такие как y = mx + b или y = e ^ x или y = sin (x). Они принимают набор чисел, представляющих данные, и выводят другой набор чисел, описывающий ответ, который вы их «научили» давать.

Как мы упоминали ранее, нейронные сети в общих чертах основаны на структуре мозга (считайте мозг полезной аналогией, а не точным представлением того, как они работают). Нейронные сети состоят из нескольких слоев «нейронов», каждый из которых состоит из нескольких «нейронов» в ширину. Каждый нейрон представляет собой относительно простую математическую операцию, представьте, что mx + b (где x - число, вводимое нейрону), за которым следует нелинейная функция, например sin (x) (фактическая используемая функция зависит от конкретной задачи, которую вы выполняете. повторюсь). Выходной сигнал каждого нейрона поступает в каждый из нейронов следующего слоя. Когда эти слои нейронов укладываются очень глубоко (отсюда и термин глубокое обучение), результатом является функция, способная описывать очень сложные отношения в данных.

Итак, мы рассмотрели, что такое нейронная сеть IS, но не обсудили, что это означает «обучение». Как нейронная сеть «учится»? Помните, как мы упоминали, что каждый нейрон применяет mx + b к своим входам? «M» и «b» в этой формуле на самом деле являются параметрами, которые можно запомнить. Другими словами, мы настраиваем значение «m» и «b» в каждом нейроне, чтобы изменить то, что делает нейронная сеть. Звучит знакомо? Фактически это то же самое, что и процесс линейной регрессии в статистике! В линейной регрессии мы пытаемся найти наиболее подходящую линию для наших данных, находя правильные параметры «m» и «b». Нейронные сети просто делают это в массовом масштабе. Вместо того, чтобы найти 2 параметра для строки, мы находим миллионы или даже миллиарды параметров для очень сложной функции. Таким образом, нейронные сети - это своего рода линии, наилучшим образом подходящие для ваших данных. Это немного странно, потому что вместо преобразования одного входа в один выход, как при линейной регрессии, нейронные сети преобразуют данные, такие как изображения, в метки, описывающие, что содержит изображение. Однако по сути это одно и то же.

Поскольку нейронные сети настолько сложны, мы не можем найти m и b (называемые весами) так же, как при линейной регрессии, поэтому нам пришлось разработать другие методы. Причина, по которой нейронные сети структурированы, как мы описали выше, очень преднамеренная. Они построены таким образом, что вся нейронная сеть дифференцируема (вся нейронная сеть имеет производную, безумно ли?). Детали того, что именно это означает, не важны. Но в результате мы можем использовать технику, называемую «градиентный спуск», для выбора правильных весов. Градиентный спуск оказался чрезвычайно успешным методом определения этих весов. Фактически, метод градиентного спуска стал причиной того, что нейронные сети стали очень популярными. Без этого они были бы бесполезны.

Идея градиентного спуска очень проста и фактически похожа на то, как учатся люди (возвращаясь к аналогии с мозгом). Поговорим о конкретной задаче - определить, есть ли на изображении собака. Мы загружаем кучу изображений (некоторые изображения содержат собак, а некоторые нет) в нейронную сеть и получаем выходные данные для каждого изображения. В начале обучения веса устанавливаются случайным образом, поэтому вывод нейронной сети не имеет смысла. После пропуска пары изображений мы сравниваем вывод нейронной сети с правильным выводом для каждого изображения. Мы проводим это сравнение, используя так называемую функцию потерь, которая сообщает алгоритму, насколько «неправильной» была нейронная сеть. С помощью некоторой математической магии (на самом деле просто исчисления нескольких переменных) мы затем вычисляем, как изменить каждый вес (помните, только много m и b) на основе функции потерь, так что нейронная сеть приближается к правильному ответу. Мы применяем эти изменения, рассчитанные для каждого изображения, а затем пробуем снова на новом наборе изображений. По мере того, как мы повторяем этот процесс, нейронная сеть становится все лучше и лучше при идентификации собак. После пары тысяч циклов нейронная сеть отлично справляется с задачей! Так же, как и люди, нейронная сеть «тренируется», пытаясь снова и снова и каждый раз становясь лучше.

Вот и все! Это фундаментальные концепции обучения нейронной сети.

Какие выводы мы можем сделать из этого?

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

Нейронные сети полагаются на данные - много данных

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

То же верно и для нейронных сетей, за исключением массовых. Нейронным сетям нужно учиться на тысячах примеров. Чем разнообразнее и разнообразнее ваш набор данных, тем лучше нейронная сеть будет работать на новых, невидимых примерах (это называется обобщением).

За последние пару лет стали доступны массивные наборы данных для большого количества задач. Однако требования к данным являются ограничивающим фактором для применения нейронных сетей к совершенно новым задачам, поскольку невозможно собрать такое количество примеров И записать правильный результат для каждого примера. К счастью, в последние годы были достигнуты значительные успехи в сокращении объема данных, необходимых для их обучения. Один из популярных методов называется трансферным обучением, когда нейронная сеть обучается выполнять определенную задачу, а затем «настраивается» для выполнения другой аналогичной задачи с меньшим количеством доступных данных.

Нейронным сетям для работы требуются мощные компьютеры

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

Подведение итогов

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

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

Источники:

[1] «искусственный интеллект». Оксфордский справочник; Проверено 27 июля 2020 г.

Https://www.oxfordreference.com/view/10.1093/oi/authority.20110803095426960.

[2] Митчелл, Том М. Машинное обучение. Нью-Йорк, Нью-Йорк: Макгроу Хилл, 2017.

[3] https://commons.wikimedia.org/wiki/File:Detected-with-YOLO--Schreibtisch-mit-Objekten.jpg