От Умберто Микелуччи, руководителя центра передового опыта в области искусственного интеллекта @ Helsana Versicherung AG, автора статей Прикладное глубокое обучение - практический подход к пониманию глубоких нейронных сетей и Продвинутое прикладное глубокое обучение - Сверточные нейронные сети и обнаружение объектов », опубликованной APRESS и соучредителем TOELT LLC.

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

Теперь вам может быть интересно узнать эту историю, так что вот она.

Вы ведь искусный интеллект?

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

«Эй, ты же парень ИИ, верно?»

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

«Ну да. Чем я могу вам помочь? »
« Легко. Мне нужно проверить действия всех пользователей на всех серверах и выяснить, не происходит ли чего-то странного. »

И, если у вас есть некоторый опыт, ваш следующий вопрос должен быть:

«Что вы имеете в виду под словом« странный »?»

И если у вас есть опыт, знайте, что ответ будет таким:

«Точно не знаем. Можете ли вы использовать какой-либо искусственный интеллект для автоматического обнаружения любых подозрительных действий при входе в систему? »

Зная, что я не получу от него намного больше информации, я решил начать с данных. Помните, как начинается история? 1000 серверов и 3000 пользователей. Как мы можем получить все файлы журналов? Эта воображаемая компания использует инструмент для объединения всех файлов журналов. Таким образом, мы смогли получить файлы журнала за месяц, загруженные с помощью этого инструмента. Это означало изучить язык запросов инструмента (что-то пугающе похожее на SQL, но менее понятное), потому что, как вы уже догадались, никто не мог сделать это за нас. Обратите внимание, что на этом этапе мы даже не начали с машинного обучения.
Мы сразу поняли, что одно событие входа в систему разбивается на переменное количество записей в файлах журнала. Перво-наперво возьмите все файлы журналов и объедините все эти записи в одну запись. Звучит просто? Подумай еще раз. Мы говорим здесь примерно о 300 миллионах событий за один месяц. Конечно, записи не всегда совпадают. Иногда их 10, иногда меньше или больше. Еще кое-что, что нужно узнать: как Linux регистрирует события. Поняв это, мы получили список из 300 миллионов записей, каждая из которых представляет одно событие. И мы даже не стали смотреть на модели. Между прочим, потребовалась серьезная обработка текста файлов журнала, если вы понимаете, о чем я говорю.

Кое-что было ясно с самого начала: мы говорили об обнаружении выбросов. Это означает выявление случаев, выходящих за рамки нормы, какими бы они ни были (вы помните, как парень ответил «Мы точно не знаем» на вопрос «что странного?») . Здесь вы можете начать замечать тенденцию: в задачах машинного обучения много вопросов, но не всегда четких ответов. Мы хотели найти нестандартные события входа в систему. Жаль, что мы не смогли определить «стандартный» каким-либо измеримым образом.

Поговорим теперь о некоторых алгоритмах. Один из распространенных вариантов решения подобных проблем - анализ главных компонентов (PCA). Если вы не понимаете, о чем я говорю, не волнуйтесь, это не имеет отношения к этой статье. Достаточно знать, что алгоритм должен обрабатывать все входные данные за один раз, а 300 миллионов записей не умещаются ни в одной стандартной памяти компьютера. Пакетная обработка? Не вариант (по многим причинам, выходящим за рамки данной статьи). Хорошо, первое препятствие. Решение? Мы обратились к автокодировщикам и ошибкам восстановления (опять же, если вы не знаете, что это значит, не волнуйтесь). Здесь важно то, что это особые виды нейронных сетей. Это означает, что нам нужно было уметь писать код для нейронных сетей и понимать, как работают автокодировщики. После подготовки данных для алгоритмов размер набора данных составил примерно 1,4 ТБ. Как вы понимаете, в этом есть свои трудности. Нам не только нужно было писать код для нейронных сетей, но и этот код должен был быть настолько эффективным, чтобы мы могли обрабатывать 1,4 ТБ входных данных.

Подведем итоги того, что нам было нужно на данный момент: понять, как Linux регистрирует события, как реструктурировать файлы, как обрабатывать 1,4 ТБ данных за разумное время, как работают нейронные сети и как писать код в таких библиотеках, как TensorFlow или pytorch (библиотеки, специально разработанные для нейронных сетей) и как писать эффективный код на Python (если вам не нравится кодировать, у вас проблемы).
Вы можете представить, что все это было сделано командой из многих людей с разными навыками. Если вы так думаете, у вас, вероятно, нет большого опыта. Если вы побывали в районе несколько раз, то знаете, сколько людей пришлось сделать все это: один.
Но подождите, мы еще не закончили. После всего этого нам нужно проверить модели, найти лучшие параметры для модели, оценить ее стабильность, убедиться, что результаты имеют смысл, и еще несколько задач, которые могут быть менее интересными для читателя, но не менее важными.

Все в порядке. Все еще со мной? Теперь вам понадобятся все имеющиеся у вас навыки межличностного общения (верно?). Как мы представляем результаты? Можете ли вы объяснить, как работает автокодировщик, тому, кто даже не знает, как написать слово «математика» или «алгоритм»? Ой, я забыл. И сделать это нужно за 10 минут, поскольку у менеджеров не так много времени. Вероятно, им нужно обсудить гораздо более важные вещи. А поскольку встреча с парнем перед вами заняла больше времени, чем ожидалось, постарайтесь сделать это за 5 минут. Легко, правда?

Я добавлю сюда несколько других инструментов и навыков, которые вам понадобятся для таких проектов. Если вы не понимаете, о чем я говорю, ничего страшного. Только представьте, что вам нужно узнать обо всем этом за несколько недель (или даже дней) во время этого супер-специального онлайн-курса, который сделает вас настоящим «гуру глубокого обучения». Вот некоторые из них: как работают версии кода и git, как правильно настроить гиперпараметры, как написать эффективный код, который может работать с Tb данных (поверьте мне, это непросто), как читать исследовательские статьи, чтобы выяснить, что за автоматический -encoders работает в таких особых условиях и еще несколько, о которых не стоит упоминать, хотя они важны на практике.

Если вы прочитали всю статью, примите наши поздравления. Если нет, тоже нормально. Я не обиделась. Главное, что я хочу сказать, - это то, что заниматься машинным обучением действительно сложно, но чрезвычайно полезно. Я думаю, что самое большое препятствие - не ваше прошлое, не то, сколько вы знаете математики или программирования, а то, насколько вы готовы работать и учиться. Не торопитесь и попросите помощи у более опытных людей. Я думаю, что в искусственном интеллекте наставничество - это один из наиболее (если не САМЫЙ) значимых способов быстрого и надежного получения необходимого опыта. Если у вас есть возможность пройти стажировку, поработайте с более опытными исследователями и практиками. Спрашивайте предложения, ходите на встречи, разговаривайте с людьми и просите о помощи. И, пожалуйста, прежде чем тратить деньги на курсы или интернет-гуру, спросите кого-нибудь в LinkedIn или кого вы знаете лично, у кого есть опыт. И самое главное, вам стоит заняться искусственным интеллектом, если вам это нравится. Это означает много работы и требует много энергии и времени. Сделайте это, если вам это нравится. Поверьте, вам будет очень весело.

TL;DR

Если вам нужна помощь, пожалуйста, свяжитесь со мной, я буду рад помочь вам любым возможным способом. Вы можете найти меня в LinkedIn здесь «https://www.linkedin.com/in/umbertomichelucci/». Не стесняйтесь обращаться к нам. Хотел бы помочь вам освоить ИИ.

Почему так сложно устроиться на работу инженером по машинному обучению?