Вы когда-нибудь ловили себя на том, что, просматривая какую-нибудь кликбейтную статью о новой штуковине с искусственным интеллектом, которая превосходит людей в выполнении какого-то дерьма, вы начинаете задаваться вопросом, как, черт возьми, машины стали такими умными? Вы когда-нибудь задумывались, как, черт возьми, Google иногда знает вас лучше, чем вы сами, когда вы просматриваете рекламу при случайном поиске?

ИИ это, машинное обучение то, глубокое обучение… эти и другие модные словечки обычно появляются, когда вы вникаете в вопросы, подобные приведенным выше. Но что, черт возьми, это за вещи? Если поискать их в Википедии, вы увидите кучу технической тарабарщины и математики. Если вы читаете статьи на таких платформах, как Vice или Buzzfeed, вы обнаружите, что их авторы так же невежественны, как и вы, а также некоторые цитаты крупных шишек из индустрии и научных кругов, которые на самом деле не дают прямого ответа на ваш вопрос.

Но получить прямой ответ очень важно.

Я чувствую, что большинство людей даже не осознают, насколько велик технический дерьмовый шторм, который назревает на горизонте, и как он готовится изменить вашу жизнь в таких масштабах, о которых вы даже не можете мечтать. Вы можете себе представить, каково было в начале 1900-х годов, когда электричество стало обычным явлением? Представьте, как это должно было быть потрясающе, когда из ваших стен вдруг вырвался электрический ток. Представьте себе, что на рынке постепенно появляются сумасшедшие машины, такие как радио, пылесос, блендер и, в конце концов, чертов телевизор! Жизнь до и после электричества — это две совершенно разные игры: начали расцветать совершенно новые виды промышленности, рабочие места и области знаний, экономика процветала, и, черт возьми, жизнь стала намного проще, когда куча машин делает дерьмо за нас.

Это счастливая часть истории.

Другая сторона медали заключается в том, что многие старые рабочие места и отрасли просто перестали существовать. *Пуф!*, ушел. В жестоком проявлении старой пословицы «адаптируйся или умри» множество людей оказались в мире, где их жизненный опыт зарабатывания на жизнь каким-то дерьмом внезапно стал неуместным. Например, больше не нужно платить за такие вещи, как ручное затягивание винтов на сборочных линиях или зажигание масляных или газовых уличных фонарей каждую ночь. Конечно, некоторые из этих людей продолжали учиться тому, как управлять машинами для затяжки винтов и как обслуживать электрические уличные фонари, но многие этого не сделали. Дело в том, что всякий раз, когда происходит подобный сдвиг парадигмы, некоторые люди в конечном итоге сильно страдают. В данном случае большинство людей пострадали от автоматизации — электроэнергия позволила спроектировать и построить машины для выполнения работ, для которых раньше требовались люди. В гораздо большем масштабе, чем, скажем, паровая энергия.

Мы наблюдаем устойчивую тенденцию к росту автоматизации с первых дней появления электроэнергии, подпитываемую массовыми сдвигами парадигм, такими как рождение спутниковых телекоммуникаций и появление компьютеров. Однако, какими бы удивительными эти вещи ни были (и до сих пор остаются), электрическая революция 1900-х годов по-прежнему носит титул тяжеловесного чемпиона современных сдвигов парадигмы. До сих пор.

На этот раз нас ждет нечто большее. И это будет трахать людей намного сильнее.

Потому что на этот раз злобные роботы автоматизируют не только физическую работу. Нет… на этот раз многие интеллектуальные действия, в которых мы используем в основном наш мозг, скорее всего, тоже будут автоматизированы! Нет, я не говорю о том, что машины станут сверхразумными, что бы это ни значило. Как вы увидите далее в этой статье, в машинном обучении и большей части того, что мы сейчас называем ИИ, нет ничего особенно интеллектуального. Дело в том, что машинам не нужен настоящий интеллект, чтобы вытеснить значительную часть человечества с рынка труда сегодня, и постоянные инновации будут способствовать увеличению этой доли.

Так что это первая из серии статей WTF, которые я буду писать о некоторых из самых раскрученных технологий нашего времени. Цель состоит в том, чтобы дать вам, дорогой читатель, прямой ответ на вопросы «что это за хрень?». Вы дойдете до конца этих ругательств (без картинок. Идите почитайте книгу для детей, если хотите мем в каждом абзаце), не только поймете, что такое, блядь, такие вещи, как машинное обучение, квантовые вычисления и ИИ, но вы также получите представление о том, как они работают. Если я добьюсь успеха, я надеюсь, что вы начнете думать о том, как вы можете предпринять упреждающие действия инаучитесь использовать их, чтобы изменить мир к лучшему, прежде чем вы пострадаете путем смены парадигмы.

Все начинается с понимания того, что, черт возьми, происходит и как некоторые технологии собираются радикально изменить мир, в котором мы все привыкли жить. Так что я дам вам все как есть — без академической чуши. Никакого формализма. Просто какое-то дерьмо, написанное повседневным языком, чтобы мягко познакомить вас с некоторыми запутанными вещами. Я твердо верю, что лучший способ не быть поглощенным этим цунами перемен — это заняться серфингом. Вам не нужно знать, точно как работает Интернет, чтобы использовать его для работы или, если уж на то пошло, начать совершенно новый бизнес на его основе. Точно так же вам не нужно ничего, кроме очень высокого уровня понимания ИИ или машинного обучения, чтобы придумать какое-нибудь безумное, но возможное применение этих новых технологий. Как только вы это сделаете, вы можете беспокоиться об изучении мельчайших деталей или поиске кого-то еще, чтобы построить его.

Итак, без лишних слов…

ЧТО, БЛЯДЬ, ЗА ЭТО МАШИННОЕ ОБУЧЕНИЕ, О КОТОРОМ ВСЕ ТРЕБУЮТ ГОВОРИТЬ?

Прежде всего: машинное обучение не является синонимом искусственного интеллекта. В лучшем случае это его ветвь, хотя его можно рассматривать и как совершенно отдельную вещь. Это тоже не ново! Если вы спросите меня, это всего лишь кое-что из старой доброй области статистики, которая была переработана учеными-компьютерщиками. Команда CompSci только что полностью переделала какое-то непривлекательное дерьмо, которое команда Stats использовала целую вечность, и вот как вы получили машинное обучение.

Не говоря уже об этом, вот хорошее определение для вас:

Машинное обучение – это набор алгоритмов и методов, которые позволяют компьютеру выполнять задачи без явного программирования для этого.

Если этот рифф не имеет для вас никакого смысла, просто расслабьтесь. Давайте немного разберем это дело.

Представьте, что у вас есть ребенок. Да, представьте, что у вас есть этот маленький милый комочек, который не может толком говорить и просто издает какие-то звуки, когда вы что-то им говорите. А теперь представьте, что вам заплатят миллион долларов, если вы сможете научить этого ребенка, что такое кошка… как бы вы это сделали?

Ну, я бы просто взял страницу из учебника любого родителя. Просто возьмите кучу книг с картинками и рисунками случайного дерьма, покажите ребенку кучу упомянутых картинок и рисунков и говорите слово «КОТ» как мудак всякий раз, когда на одной из картинок изображен кот (а «не кот» или что там на картинке, если это не кошка).

Если у вас есть идея получше, я бы хотел ее услышать, но дело в том, что ЭТО РАБОТАЕТ. Каким-то образом ребенок просто смотрит на эти рисунки, слышит, как вы говорите «кошка» кучу раз и БУМ! В конце концов, они могут просто посмотреть на какого-нибудь случайного уродливого кота на улице и исступленно произнести звук «кот»… или что-то близкое к нему.

КАК ОНИ ЭТО ДЕЛАЮТ?

Я не нейробиолог, так что ни хрена не знаю.

Что я знаю точно, так это то, что вы можете заставить компьютер провернуть очень похожий трюк. Ты слышал меня. Вы можете показать компьютеру несколько случайных фотографий и рисунков, сказать «кошка», когда на картинке изображены кошки, и БУМ! В какой-то момент он сможет посмотреть на новую фотографию кота и сказать, хотя и не так мило, как младенец: «Это кот».

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

Итак, компьютер может смотреть на картинки и учиться распознавать, что на них изображено… но сначала обо всем по порядку! КАК, БЛЯдь, КОМПЬЮТЕР ВИДИТ ФОТО?

Хороший вопрос.

Компьютеры не «видят» картинки так, как мы. Это означает, что у компьютеров нет глаз, как у нас, и у них нет мозгов, как у нас. Итак, то, что для нас свет, падающий на наши глаза, запускает электрический сигнал, который поднимается к нашему мозгу, совершенно отличается от компьютеров. Для компьютера изображение — это просто набор чисел. Вот и все. Кот? Куча цифр. Собака? Куча цифр. Кошка съела собаку? Просто набор цифр.

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

Технически изображение, которое видит компьютер, на самом деле может состоять из ТРЕХ таких «таблиц». По одному на каждый из каналов RGB (красный, зеленый и синий). Да, любое изображение с любым количеством цветов может быть представлено как три изображения — красное, зеленое и синее — наложенные друг на друга. Различные интенсивности этих трех цветов в каждом пикселе смешиваются вместе, чтобы создать фактическое изображение, которое мы видим на экране. Но в любом случае, мы будем считать изображение только одной из этих таблиц ради аргумента.

Дело в том, что все, что «видит» компьютер, — это набор чисел.

Точно так же компьютеры не будут читать или слышать слово «кошка», когда вы учите их выполнять задачу по распознаванию изображений кошек. На практике то, что вы дадите компьютеру, также будет числами. То есть, вместо того, чтобы давать компьютеру изображение вместе с собственно словом «кошка», вы даёте ему изображение и, например, цифру 1, когда на картинке есть кот, и цифру 0, когда кота нет.

Таким образом, для компьютера процесс просмотра картинки и определения того, есть ли на ней кошка, сводится к следующему:

"Возьмите таблицу с кучей чисел и выдайте число".

И то, как компьютеры преобразуют числа в другие числа, точно так же, как это делаем мы, люди — они используют математику. В частности, они используют концепцию функций.

Помните функции? То, что мы все должны были выучить в старшей школе?

Напомню: функции — это набор арифметических операций, которые вы выполняете над числом X, чтобы получить число Y. Другими словами, Y = f(X) , где fможет означать дерьмо вроде «возьми два любых числа X и прибавь к ним число 1» (Y = 2X + 1) или «возьми два любых числа X, умножь их вместе и возьми косинус результата» (Y = cos(X²)).

Помните это дерьмо сейчас? Тогда позвольте мне пойти немного глубже.

Возьмем приведенный выше пример Y = 2X + 1. Скажем, я хотел обобщить этот тип отношений между Y и X, чтобы я мог сказать дерьмо типа "взять любое количество этого числа X и прибавьте к ним любое число». На математическом языке это f(X) = aX + b, где a и b называются параметрами, иf — это «семейство» функций с параметрами a и b. На самом деле вы можете написать это f(X,a,b)для удобства, это просто означает f(X и параметры f). «Семейство» функций в этом примере называется «линейными функциями». Есть много-много других таких «семейств», и, поверьте мне, они могут оказаться намного сложнее, чем линейное семейство.

Вернемся к компьютерам.

Когда вы попросите их распознать изображение кота, они будут использовать функции. Они будут применять к изображениям некоторую функцию f, такую, что:

f(image and parameters) = 1, если на картинке есть кошка.

f(изображение и параметры) = 0, когда нет кота.

Так как же выглядит эта волшебная функция поиска кошек f?

Это то, что компьютер узнает, когда вы дадите ему кучу картинок вместе с их ярлыками, 0 или 1 (без кота или кота).

(Кстати, компьютер может обучиться функциям распознавания любого количества вещей, которые вы хотите. Например, представьте, что вы хотите научить компьютер распознавать кошек исобак. В этом случае ярлыки больше не просто 0 или 1, а скорее вектор(a,b), где a=1если есть кошка, a=0 если нет кошки, b=1если есть собака и b=0если собаки нет. Если вы хотите распознать больше объектов, просто используйте более длинный векторы.)

Мы можем резюмировать все это следующим образом: что такое Машина? Обучение – это «какая математическая функция fлучше всего приближает (определенным образом) все эти пары изображений и ярлыков, которые этот чувак только что дал мне, чтобы я максимально приблизился к примерно Y=f(X)? (или f(изображение и параметры)=кот или без кота)”.

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

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

Звучит просто, но некоторые из этих алгоритмов на самом деле чертовски сложны. Кроме того, видите, как я сказал выше «наиболее подходит (в определенном смысле)»? Да, оказывается, вы, как правило, не хотите, чтобы компьютер находил АБСОЛЮТНО ЛУЧШУЮ функцию, которая идеально соответствует вашим данным, иначе он научится идеально идентифицировать кошек, которых вы изначально ему дали, но потом будет отстойно идентифицировать кошек, которых он раньше не видел. …в этом весь смысл научить его распознавать кошек.

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

ЗДОРОВО. НО ЧТО ТАКОЕ СО ВСЕМИ КОТАМИ, ЧЕЛОВЕК?

Итак, узнавать кошек не так уж и интересно. Что ж, как оказалось, те же самые концепции, которые вы только что прочитали выше, могут быть использованы для создания всевозможных крутых вещей. На самом деле входные данные даже не обязательно должны быть изображениями, это могут быть любые данные! Некоторые примеры крутых приложений: смотрят на кожную сыпь, родинки и т. д. и говорят вам, рак ли это, какая-то другая болезнь или вообще ничего; просмотр медицинских изображений и обнаружение переломов, опухолей или других аномалий; выяснить, на каком языке написан фрагмент текста; обнаружение спама; обнаружение фейковых новостей; выявление фальсифицированных произведений искусства; обнаружение плагиата; аутентификация по отпечатку пальца; слушая песню и находя исполнителя, который ее написал.

С некоторыми изменениями и некоторыми дополнительными математическими вычислениями можно сделать еще более интересные вещи, например: определить, где на изображении (или видео!) находится определенный объект (это одна из концепций беспилотных транспортных средств, роботизированное зрение… а также снэпчат); перевод текста между разными языками; обнаружение кибератак в режиме реального времени; обнаружение физической угрозы; обнаружение финансового мошенничества; Обнаружение земных экзопланет… список можно продолжить!

И это даже не вся история. Приведенные выше концепции и приложения являются примерами задачи машинного обучения, называемой классификацией. Как следует из названия, задача состоит в том, чтобы просто просмотреть некоторые входные данные и присвоить их категории (кошка или не кошка, рак или нет рака, человек, машина, стена, дорога или велосипед). В этом случае ярлыки, которые вы даете компьютеру вместе с входными данными, хотя и являются числами, но не настоящими числами — это просто флажки, представляющие категории. . Когда вы выполняете машинное обучение с фактическими числами, т. е. числами, представляющими количества, а не категории, задача называется регрессией. Например, представьте, что вам дали кучу финансовых данных и попросили спрогнозировать цену определенной акции. Вы можете выполнить регрессию и заставить компьютер изучить функцию f(financial data) = price of stock. Рассмотренные выше принципы по-прежнему применимы, просто алгоритмы будут фокусироваться на различных видах функций f при работе с числами, а не с категориями. Некоторые интересные применения регрессии: контроль температуры; автоматизированная (также называемая алгоритмической) торговля; прогнозы потребности в ресурсах; прогноз погоды; оптимизация цепочки поставок и многое другое!

Даже это не вся история. Регрессия и Классификация — это задачи, известные как Обучение с учителем. Это буквально означает, что кто-то (человек или другой компьютер) должен контролировать процесс обучения компьютера, передавая ему как входные данные, так и метки (в случае классификации) или значение результата (в случае регрессии). Другими словами, вы даете компьютеру набор пар X и Y и заставляете его выяснить, какая функция f хороша, чтобы вы получаете (очень) грубое приближение Y = f(X)для всех ваших данных.

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

Ответ "типа".

Существует еще одна ветвь машинного обучения, которая называется Обучение без учителя и занимается подобными задачами. В нашем гипотетическом сценарии вы могли бы попробовать что-то под названием кластеризация — набор методов, в которых вы даете компьютеру меру расстояния (или непохожести) между объектами и просите его сложить объекты, которые «близки» друг к другу. (или «похожих») по группам. Затем компьютер сообщает вам, сколько групп он придумал и какие из ваших точек данных принадлежат каждой группе. Иногда не совсем очевидно, почему компьютер придумывает какие-то группы, поэтому вам решать, какого хрена он сделал и имеет ли это смысл.

Другими типами задач обучения без учителя являются системы уменьшения размерности и рекомендательные системы.

Методы уменьшения размерности обычно используются, когда у вас слишком много переменных в ваших данных, и вы хотите извлечь из них только важную информацию, чтобы в итоге вы получили меньше переменных, но не потеряли слишком много информации. Иногда люди используют эти методы, даже если у них не обязательно есть «слишком много» данных, но они просто хотят извлечь из своих данных что-то приятное, прежде чем приступить к обучению с учителем. Поэтому, когда они это сделают, они могут в конечном итоге повысить производительность на этапе обучения и получить хорошие результаты, когда они будут использовать функции, изученные компьютером.

Подобно задачам контролируемого обучения, методы уменьшения размерности обычно включают в себя изучение некоторой функции f, которая при применении к вашим данным X приводит к уменьшению набора данных Z , который содержит почти всю информацию X, но занимает меньше места. Это похоже на сжатие материала. Однако, в отличие от контролируемого обучения, эти методы обычно включают в себя всякую ерунду, такую ​​как Ортогональные проекции и Автокодирование, вместо прямого поиска какой-либо функции, которая просто хорошо соответствует вашим данным.

Тогда есть рекомендательные системы.

В наши дни рекомендательные системы являются настоящим источником дохода в области машинного обучения. Это не совсем неконтролируемое обучение… и не контролируемое обучение, если уж на то пошло. Они почти в своем классе. Кто-нибудь знает эти «рекламные объявления» на Facebook? Рекомендательные системы. Netflix знает, какое новое шоу повесить вам в лицо, чтобы вы попались на крючок? Рекомендательные системы. «Товары, которые могут вам понравиться» на Amazon? Вы это знаете: рекомендательные системы.

Идея этих ублюдков не что иное, как гениальность.

Это выглядит так: в моем магазине есть масса товаров (или выставок), которые я бы хотел, чтобы вы купили, но я не знаю, каковы именно ваши предпочтения (некоторые онлайн-компании делают это сейчас, когда они постоянно шпионит за вами, но это не главное). Я знаю некоторые вещи, которые вам нравятся, потому что вы уже покупали (или смотрели) их несколько раз. Или, может быть, вы поставили ему высокую оценку или оставили положительный комментарий. У меня также есть эта информация обо всех моих других клиентах. Что, если я просмотрю всех других клиентов, найду тех, у кого предпочтения схожи с вашими, но они купили (или посмотрели) то, чего нет у вас? У вас у всех схожие предпочтения, так что, возможно, вы захотите купить что-нибудь из того дерьма, которое купили и эти парни! И это все! Имея в виду эту идею, некоторые умные люди придумали очень масштабируемые и элегантные способы, по сути, предсказать, какой будет ваша оценка для продукта, который вы не оценили, на основе оценок других клиентов для всех других продуктов. Если он достаточно высок, они порекомендуют вам этот продукт. Другие варианты этой идеи включают в себя такие вещи, как выяснение того, какие продукты с большей вероятностью будут покупать вместе, или создание виртуальных персонажей на основе агрегированных данных от реальных людей и моделирования того, что им может понравиться.

Что бы они ни использовали в наши дни, вы можете сказать, что бизнес довольно хорошо справляется с этим дерьмом. Просто откройте Facebook или выполните поиск в Google, и вы получите несколько рекомендаций, которые заставят вас задаться вопросом: «Откуда дафуки могли знать?». Жуткое дерьмо.

И это все для неконтролируемого обучения! Некоторые интересные приложения включают в себя: сегментацию клиентов; персонализированная или таргетированная реклама и исследовательский анализ данных.

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

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

Следующая статья, вероятно, будет посвящена ИИ, и я напишу еще немного о том, почему я думаю, что это следующее изменение парадигмы станет матерью всех изменений парадигмы. Соглашайтесь или не соглашайтесь с тем, что произойдет в ближайшем будущем, я надеюсь, вы оцените, насколько машинное обучение — это простая концепция по своей сути, но чертовски мощная!

«Я пытался убедить людей замедлить работу ИИ, регулировать ИИ, но это было бесполезно». — Илон Маск, 2018 г.