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

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Ванг Гог умер, да здравствует Neural Network!

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

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

Первое, что нам понадобиться — матчасть. Да, к сожалению без нее в мире нейросетей делать нечего, ну, кроме использования стандартных Python библиотек вроде Scikit-learn, Keras, TensorFlow и Theano с практически таким же отсутствием понимания, что и для чего вы делаете, с каким вы прочитали перечисление этих самых библиотек выше.

Для приготовления матчасти нам понадобиться:

  1. Линейная алгебра, включающая в себя такие удивительно прекрасные вещи как: векторы, матрицы, интегралы, производные, их свойства и операции.
  2. Математическая статистика, включающая в себя генеральные совокупности, выборки, кластеры, нормальное и t- распределения, дисперсионный анализ, линейную регрессию, регрессионный анализ и классификацию.
  3. Теория вероятностей, включающая в себя Байесовские методы, случайные величины, дисперсию, математическое ожидание, сходимости, непрерывное распределение и центральную предельную теорему.
  4. Методы алгоритмов, включающие в себя О-символику, очереди с приоритетами, методы сортировки, методы поиска, рекуррентные соотношения, а также метод «рюкзака».
  5. Структуры данных, включающие в себя массивы, стеки, структуры данных, очереди с приоритетом, системы не пересекающихся множеств и хеш-таблицы, а также решающие деревья, которые подразделяются на деревья поиска и сплей-деревья.

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

Теперь пора приниматься за создание своей первой нейросети на практике с нуля. А значит, нужно как следует понять что такое и с чем едят машинное обучение и проштудировать основной язык программирования, идеально подходящий для написания нейросетей. Прошу любить и жаловать — Python a.k.a. Питон a.k.a. Змеиный язык.

Для приготовления первой нейронной сети, написанной на корявом newbie-code без соблюдения PEP-8 вам понадобиться:

  1. Введение в машинное обучение (МО), включающее погружение в модели машинного обучения, методы анализа признаков, кластеризацию, алгоритм k-средних, применение линейной и полиномиальной регрессии в МО, задачи классификации, метод kNN (k ближайших соседей), леса решающих деревьев, линейные классификаторы, байесовский классификатор и ансамбли алгоритмов.
  2. Основы программирования на Python, включающие в себя изучение таких основных «блоков» Python-кода, как операторы, переменные, типы данных, условия, циклы, строки, списки, функции, словари, а также ввод/вывод файловых данных, подключение модулей и библиотек.
  3. Основы применения Python, рассказывающие о модели данных языка Python, функциях, стеках, пространствах имен, классах, генераторах и итераторах, стандартных методах и функциях Python, регулярных выражениях, веб-запросах, работе с API и XML, а также о стиле программирования PEP-8.
  4. Машинное обучение на Python, которое научит использованию библиотеки Pandas, визуализации с помощью Matplotlib и Seaborn, построению решающих деревьев и случайных лесов на Scikit-learn и подбору параметров «оценщиков» с помощью GridsearchCV.
  5. Нейронные сети на Python, которые расскажут как все устроено «из под капота», а именно про перцептрон и многие другие виды нейронов (linear, sigmoid, tanh, ReLU, softplus), про градиентный спуск, однослойные и многослойные модели нейросетей, их целевые функции, про алгоритм прямого и обратного распространения ошибки, визуализацию обучения нейронной сети и тестирование модели.

Пройдет еще 5 тяжелых недель и вы сможете с гордостью сказать, что теперь можете создать нейронную сеть с нуля, даже не прибегая к использованию готовых библиотек, вроде Scikit-learn. Теперь вы точно готовы.

Готовы к тому, чтобы создать с нуля своими руками используя все изученные вами за эти 10 недель методы, завершить один из junior-проектов на такой прекрасной платформе для Data Science, как Kaggle.

Давайте же поговорим об этих проектах:

  1. Исследование эффективности классификаторов Scikit-learn в задаче распознавания рукописных цифр из базы данных MNIST. Сравнение точности всех классификаторов библиотеки Scikit-learn при обучении на данных MNIST с использованием заранее найденных лучших параметрах для решения этой задачи у каждого классификатора, подробный вывод графической и текстовой статистики, статистический анализ полученных данных.
  2. Реализация сверточной нейронной сети (СNN) на библиотеке Keras для решения задачи классификации одежды на базе данных Fashion MNIST. Графический анализ кривых обучения, кластерный анализ, реализация автоматического выбора наилучших параметров модели для достижения точности более 99,9%.

Вы наверно спросите после этих 3-тяжелых месяцев, что же дальше? А дальше, дорогие мои, глубокое обучение.

  1. Основы глубокого обучения, включающие в себя уже полюбившиеся нам модели распознавания, аля Numerical MNIST и Fashion MNIST, обучение с подкреплением, сверточные нейронные сети, рекуррентные нейронные сети, распознавание объектов на изображениях и анализ текста.
  2. Глубокие нейронные сети для задач компьютерного зрения, подразумевающие изучение таких аспектов как обучение без учителя, перенос обучения, распознавание и классификация объектов на изображении, поиск объектов на изображении и анализ признаков объектов.
  3. Введение в обработку естественного языка (NLP), включающее в себя морфологический анализ, построение языковых моделей, методы NLP в задачах поиска информации, синтаксический анализ, методы извлечения информации и машинный перевод.

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

Вы впитали основы и готовы оттачивать свое мастерство ежедневной практикой. Поэтому в конце этого «спринта» в мир нейронных сетей длительностью в 4 месяца вас ждет особый проект.

  1. Разработка чат-бота с функцией анализа фото с помощью TensorFlow и Deep Learning на основе CNN, решающих задачи компьютерного зрения и обработки естественного языка. Довольно сложная задача объединения в одно приложение нескольких взаимосвязано работающих нейросетей.

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

Теперь, а вам остается ответить лишь на один вопрос:

To be Data Scientist ot no to be?


Источник: m.vk.com

Комментарии: