Нулевое и главное. Терминатор - это уже не фантастика. Вопрос о создании такой машины стоит не "если", а "когда". Война и агрессивность - вряд ли в реальной перспективе. Но, в принципе, в какой-то момент системы машинного обучения надо будет запирать в защищенных лабораториях примерно как смертельные вирусы. Может даже уже пора (по ссылке очень смешно, обещаю).
Теперь, когда мы разделались с индексной картинкой, поговорим серьезнее.
В прошлом году я прошел на курсере серию уроков и практических занятий по Data Science - "науке о данных", как они ее называют. По большей части, там учили пользоваться интерпретатором языка R - назвать это программированием не поворачивается язык. Я до сих пор пользуюсь этими навыками - например, чтобы анализировать статистику Голоса. Язык R - древний, это такой эксель в командной строке. Большинство его переменных - это таблицы разной размерности, его основные операции и библиотеки заточены для манипулирования этими табличными данными и визуализации их. И библиотек этих, реализующих различные статистические методы и техники машинного обучения, очень много.
Недостаток R по сравнению с экселем - сложность использования и меньшая наглядность. Достоинства - богатство библиотек, большая мощность, повторяемость действий, меньший шанс ошибки за счет неловкого движения мышкой. И возможности от открывает куда более богатые, если разработчик крут. Я так не могу, но в качестве примера можно посмотреть на работы Макса Вульфа - скажем, его визуализацию публичных данных о маршрутах нью-йоркских такси (мотайте за картинками сразу в конец его поста). Впрочем, вот одна из них для примера.
Но я отвлекся. Итак, что я узнал из курса и информации, изученной в связи с ним.
Статистика - крайне сложная наука в силу своей контр-интуитивности. Ответы сложных задач по статистике описываются формулами на уровне 2+3=5, но чтобы выбрать именно такую формулу, нужно очень глубокое понимание. Применения же статистики в современном мире чрезвычайно многообразны. В первую очередь - машинное обучение.
Машинное обучение - это более точное название "Искусственного интеллекта", или, во всяком случае, его основа. Обучают обычно предсказывать результат по набору входных данных. Нейронные сети - один из алгоритмов машинного обучения. В основе большинства схем машинного обучения - огромное число примеров принятия решений, где на входе подается большой набор данных, а на выходе - то ли иное решение. И данные, и решения в принципе переводятся в числовую форму, чтобы к ним можно было применять статистические алгоритмы и математические формулы. Допустим, когда близость текстов анализируется по смыслу, все словоформы из слов превращаются в точки в многомерном пространстве смыслов. Где какой смысл - точно не сказать, но можно сказать, насколько два слова близки в этом пространстве.
Любимые публикой карты слов - более примитивное применение тех же алгоритмов. Основная работа специалистов по машинному обучению - сбор, чистка, обработка и подготовка данных. А сами алгоритмы - малая часть, и обычно достаточно стандартных библиотек. Важнее придумать, как структурировать данные, чем какой алгоритм выбрать.
Специалисты по ИИ за работой (источник). Важный принцип машинного обучения - что больший объем данных всегда побьет по качестве результата более умный алгоритм обучения.
Важный тезис машинного обучения - "мусор на входе - мусор на выходе". Имеется в виду, что для получения качественного результата нужны качественные данные для обучения.
Известно как алгоритм обучения работает, но неизвестно, почему именно обученная система дает тот или иной ответ. В этом самая большая сила и самая страшная угроза машинного обучения. Поведение обученных алгоритмов перестает быть прозрачно даже для самих разработчиков. Нельзя больше пройти по цепочке выборов, сделанных машиной на основе поданных данных, и проследить, почему она приняла то или иное решение. Эта прозрачность теряется. Чем мощнее компьютеры - тем более длинными и менее прозрачными становятся цепочки. В наше время это дошло до магических масштабов, когда машина творит просто какие-то чудеса - возьмите, скажем, прогресс в понимании устной речи, и успехи машинного перевода. Дальше будет больше.
Если у вас есть минимальные знания о программировании, посмотрите эту главу книги о машинном обучении, и главное - в конце ее на программу из 74 строк, включающих собственно алгоритм нейронной сети, которая распознает рукописные цифры лучше человека. 74 строки!
Схема нейронной сети из этой книжки. Существует сайт http://kaggle.com, где соревнуются специалисты по ML. Компании приносят им свои наборы данных для обучения, и дополнительные наборы данных, прогнозы по которым неизвестны участникам, но известны организаторам. Соревнующиеся должны сделать прогнозирующие системы, которые будут делать предсказания как можно точнее (ближе к известным организаторам ответам). Берешь данные с ответами, тренируешь свою программу, берешь тестовые данные, делаешь по ним предсказания, заливаешь результат. Смотришь процент попадания и свое место в рейтинге других участников. Администрация сервиса хвалится, что в 100% случаев участники конкурса давали предсказания лучше, чем исходный алгоритм компании, которая дала свои данные на конкурс. Победители обычно используют стандартные библиотечные алгоритмы, но хитро и с умом готовят данные, перед тем, как учить ими машину, и используют для учения быстрые видеокарты.
Еще важный тезис: обучение машины - очень долгий и вычислительно "дорогой" процесс. Получение ответа от обученной машины - куда более быстрый и "дешевый".
Это вам не койны майнить (источник). Машинное обучение уже сейчас - основа бизнеса крупнейших компьютерных компаний (каждый первый сервис Гугла, или вот, скажем, лента Фейсбука). А скоро - всех любых компаний, которые хотят оставаться конкурентоспособными. Малый бизнес будет сталкиваться с низкоуровневыми решениями машинного обучения по минимуму, получая их результаты в виде коробочных продуктов (скажем, в виде антифрода на процессинге кредиток), но чем крупнее - тем важнее будет иметь что-то свое, более эффективное, чем у конкурентов. Алгоритмы выявления нетипичных случаев (и типичных случаев уклонения) будут основной работы налоговых и прочих госорганов.
Вспоминается, как мы общались с экаунт-менеджером из Гугла на тему нашей рекламы в адвордс. Непонятно было, почему наша реклама не показывается по определенному запросу, хотя конкуренции на наш запрос не было никакой. Менеджер говорил, что это - черный ящик. Познакомившись с миром машинного обучения ближе, стало понятно, что он не кокетничал. Менеджер в самом деле не знал, почему так происходит. И никто не знает. Там нет линейной логики. Просто алгоритм, обученный на оптимальное размещение рекламы, считал, что в это контексте нет смысла ее показывать.
Этот последний пункт уже не из курса и не из книжек, а из моего жизненного опыта. Полезным бытовым умением будет навык "обманывать" алгоритмы компаний - чтобы получать их внимание или уклониться от него. Скажем, чтобы авиакомпания подарила бесплатный апгрейд не бизнес-класс. Нет, мой опыт был не с авиакомпанией, это просто пример. Но подробнее об этом как-нибудь в другой раз.
Захватывающе:))
@oxygendependant, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:
Давелось мне столкнуться с языком R еще в юности на практике в водоканале. Я думал он уже давно канул в Лету )))
Рост темы про машинное обучение привел к новой молодости, видимо. Авторы курса работают в биостатистике - я так понял, что он популярен именно в той среде, в первую очередь.