Машинное обучение на практике – от модели PyTorch до Kubeflow в облаке для BigData
Шрифт:
* распознавание типа действия на видео, которое може использоваться полицией или службами безопасности: Temporal Action Localization Task в датасете ActivityNet с вероятностью угадывания с 18% до 42.8% за 4 года;
* распознавание объектов на фото, которое может использоваться в автопилотах: MEAN AVERAGE PRECISION в датасете You Only Look Once (YOLO);
* распознавание людей по лицам, которые используется авторизации по лицу (банки, магазины, метро): Face Recognition Vendor Test (FRVT) в National Institute of Standards and Technology (NIST) с ошибкой до 0.22% за 3 года;
* понимание текста в датасете Stanford Question Answering Dataset (SQuAD) с 45% до 90.3% за полтора года (лучше человека);
* опрос по картинке на соревновании Visual Question Answering (VQA) Challenge в задаче Visual Commonsense Reasoning (VCR) Task с 68% до 95.4% для версии SQuAD v1.1 (лучше человека);
* рассуждения по тексту или картинке на соревновании Visual Question Answering (VQA) Challenge за 4.5 года с точностью с 55% до 76.4%;
*
* распознавание какому человеку принадлежит реч: 0,6% ошибок;
* предсказание структуры белка с 2016 года обогнала физически модели с точностью 40% и на 2020 год достигли точности 84%;
* решение проблем и доказательство теорем: с 2017 года имеет линейный тренд без прорывов;
Целесообразность применения машинного обучения используется там, где много данных, на которых их можно обучить. А это зачастую или корпорации, или иногда применение самих обученных нейронных сетей осуществляется как краевые вычисления (IoT).
Сейчас с Microsoft в непосредственной области ML и AI, и интеграции этих наработок в продукты работают более 7000 специалистов. На примере продуктов компании Microsoft посмотрим на внедрение ИИ в больших компаниях:
* 1995 – Помощник MS BOB;
* 1996 – Ассистент MS Office Clippy и корректор грамматики;
* 2002 – Распознавание рукописного ввода Windows XP;
* 2011 – Классификатор снимков в Windows Live Photo Gallery;
* 2013 – Помощник Contana;
* 2014 – Синхронный перевод в Skype;
* 2015 – Аутентификация с помощью видеокамеры Windows Hello;
* 2016 – Чат-боты и распознавание образов статистически лучше человека;
* 2017 – Распознавание речи статистически лучше человека;
* 2018 – Выполнение тестов статистически лучше человека.
Сама компания развивает AI в областях: консалтинг, образование, программные сервисы (SaaS), фреймворки, инструменты для разработчиков, программная (облака) и аппаратная (процессоры) инфраструктура.
Если же брать в общем индустрии, то применяться они могут для нахождения точек продаж (воронки), классификации звонков (предварительный разговор), выявления фрода, предиктивная аналитика (поломок).
Глубокое обучение, начавшееся как тренд в 2012 году, сейчас переходит в плато и начинает находить применение. Для применения ищутся способы определения, на основе каких признаков было принято конкретное решение, например, при отказе выдать кредит законодательство обязывает предоставлять клиенту причину отказа. Одновременно в компаниях или внедряются уже наработки в продукты, или отлаживаются для большего уровня интеграции.
Посмотрим на рост глобальных инвестиций корпораций и стартапов в AI:
2015 – 12 и 8 Mil.$ 2016 – 17 и 12 Mil.$ 2017 – 44 и 22 Mil.$ 2018 – 43 и 37 Mil.$ 2019 – 49 и 39 Mil.$ 2020 – 67 и 42 Mil.$
Посмотрим частный пример, на рост индустрии на примеров увеличения количества сервисов машинного перевода:
2017 – 7 2018 – 10 2019 – 21 2020 – 24
Теперь, собственно, настало поговорить о вакансиях. Количество вакансий с 2016 по 2020 год выросла 1.3..2.7 раз, при этом число вакансий от общего числа составляют от 0.2% до 2.4%:
США – 210% Канада – 270% Австралия – 210% Сингапур – 250% Германия – 220% Италия – 170% Франция – 160% Китай – 130%
В курсах по AI доля Machine Learning составляет 42%.
Если же говорить об рабочих местах и о смещении на технологические рабочие места. Часто, компании, которые автоматизируют рабочие места, заявляют, что сотрудники которые их занимали могут переквалифицироваться и начать управлять этими автоматизированными системами. Обычно, люди со стороны относятся к этому с недоверием, так как непонятно, зачем автоматизировать и потом оставляют тоже количество людей, ведь автоматизация подразумевает в их понятие автономность. Но, это не так, так как автоматизация подразумевает наличие огромного количества людей, разрабатывающих и обслуживающих эти системы. Так, в одной из крупнейших компаний России есть план, который подразумевает освобождение нескольких тысяч мест продавцов, кассиров и других операторов, но вместе с тем запланирован найм большего количества тысяч рабочих мест специалистов обслуживающих системы AI. Ожидается качественный и масштабируемый прирост показателей услуг, предоставляемых компанией, а большей степени отрытие новых ниш развития компании. Количество в среднем останется таким же, так как большой набор проектный (единичный), а отток – плановый (ежегодный). Но, конечно, продавцы и кассиры маловероятно, что переквалифицируются в разработчиков, аналитиков и учёных с сфере ИИ. Хотя, большими компаниями делаются попытки в этом направлении – создаются курсы и очное обучение на несколько месяцев для переквалификации сотрудников. Обычно, люди с умирающих профессий переквалифицируются в другие умирающие профессии, у которых умирание произойдёт с небольшим запозданием. Это связано с тем, что люди бегут с простых работ на работы чуть сложнее, чем были до этого, ожидая быструю и разовую переквалификацию. Например, продавцы могут переквалифицироваться в таксистов, где требуется чуть больше технических навыков, чем их прежняя работа, и автоматизация, чуть сложнее и чуть менее эффективна. Такая ситуация была всегда, и связана
она с любой автоматизацией, не только компьютерной. Общей чертой профессий, подлежащих автоматизации является рентабельность, то есть они достаточно массовы и легко автоматизируются, чтобы это стало выгодным. Популярность профессии для перехода с умирающей и является, что она скоро станет массовой, а лёгкость переквалификации связана со стандартизацией. Так, курсы по переквалификации уже говорят, что есть алгоритм и он будет применён многократно, пока только на этапе переквалификации, а не на этапе постоянной работы. Отсюда вытекает следствия, что столь популярная профессия как Web программист с понятными навыками, понятными заданиями может быть автоматизирована. Не секрет, что в разработке формализован стиль кода, фреймворки, подходы, постановка задач. И действительно, современные готовые (предобученные) нейронные сети могут генерировать работающий программный код, но об этом позже в этой книге. Но, программисты, гораздо ближе к эффективной переквалификации, если он если они не занимаются простым кодированием. Но, только 2020, нейронные сети могут формировать только простой код на языке программирования, а насколько – в соответствующем разделе. Поэтому программисты разделяются на два лагеря – программисты пишущие типовой код, которым сложно адаптироваться, но которых это коснётся и программистов, которых могут переквалифицироваться, который понемногу будут вытеснять первая группа программистов, и которым, скорее всего интереснее и перспективнее это будет сделать. Правда тут не всё так однозначно, так с 2018 года, нейронные сети уже умеют проектировать другие специализированные нейронные сети с помощью технологии AutoML.Что, касается самой профессии Data scines – это аналитик данных, который на основе понимания предметной области может с помощью статистических методов используя инструменты (языки, системы) получить предсказания. Более подробно о навыках:
* математическая статистика и теория вероятностей, чтобы мог выбрать статистические методы, где ML не нужен;
* алгоритмы ML: регрессия, классификация, кластеризация, порождения (генерации), сопоставление;
* программирование: аналитика на R, написание моделей на Python и подключение данных из Java+SQL (Hadoop, Hive, Spark, Pig), управление жизненным циклом модели (DevOps, SRE);
* мягки навыки: понимание предметной области (ориентация на бизнес результат), проектное управление (коммуникация для построения запуска модели), аналитика для проверки гипотез.
Пишем свою сеть
Для примера возьмём прописные числа от нуля до девяти, которые мы будет сопоставлять с печатными. Если прописные точно попадают в контур – то всё просто, нам нужно просто перебрать контура печатных и получить подходящий вариант. Такая задача не относится к задачам машинного обучения. Теперь усложним задачу – числа у нас не точно попадают под шаблон. Если прописные числа немного не вписываются в контур – мы просто находим какое–то отклонение. И тут возникает сложность при категоризации прописного числа на ноль и девятку, когда размер хвостика отделяет небрежное написание нуля от девятки. Другой момент в категоризации восьмёрки и девятки. Так, если кончик отгибается – это десятка, а если загибается и прикасается – то восьмёрка. Для решения подобной ситуации нужно разделить цифру на области и в зависимости и присвоить им разные коэффициенты. Так, соединение хвостика нижней части имеет очень высокое значение, нежели форма самих окружностей в классификации на восьмёрки и девятки. Определить помогут статистические данные по заранее данной выборке соответствия фигур восьмёркам и девяткам, где исследователь сможет определить, когда уже можно высчитать нижнее кольцо замкнутым и говорить о соответствии восьмёрке фигуры, а когда нет, говорить о соответствии девятке. Такой метод сортировки, основанный на выделении отдельных компонент, на различии которых и принимается решение о сортировке, называется методом главных компонент. Но мы можем программным способом разделить цифры на сектора и присвоить им коэффициенты.
Другой сложностью может быть то, что цифра может быть не в наблюдаемой области, а в произвольной, например, в углу. Для анализа самой цифры нам нужно переместить анализирующее окно в то место, где находится цифра. Для простоты пока будем полагать, что габариты анализирующего окна равны габаритам исследуемой цифры. Для решения этой задачи перед сетью ставят анализирующий слой, образующий карту нахождения цифры. Задача этого слоя определить местоположение цифры на картинке. Для простоты возьмём чёрное изображение на белом листе. Нам нужно пройтись анализатором цифры построчно по всему листку и определить местоположение. В качестве индикатора возьмём площадь чёрного цвета на индикаторе. После прохождения по листку бумаги и определения площади мы получим матрицу с цифрами площадей чёрного цвета. Где площадей чёрного цвета больше – в том месте цифра максимально вписалась в индикатор. Преобразование картинки в матрицу площадей называется операцией свёртки, а если это выполняет нейронный слой – свёрточный слой. Принцип работы был позаимствован у биологического зрительного нерва. Нейронные сети, в которых присутствует свёрточный слой (Conv Layers) называются свёрточными нейронными сетями (Convolutional Neural Network, CNN). Такие сети используют при распознавании изображения, а после при должном развитии их адаптировали для распознавания речи и текстов. Классически, CNN применяется для решения трёх задач при работе с изображениями: