Инструменты для машинного обучения через нейросети (Machine learning via neural networks)

Автор: | 29.12.2020

Введение

Нейросети — один из видов машинного обучения (подробнее см. Машинное обучение для людей). Краткая вводная информация о том, что такое НС, для чего нужны и какие бывают см. в статье От регрессии к нейронным сетям.

Прежде, чем переходить к профессиональному машинному обучению через нейросети, рекомендуется ознакомиться с основами построения нейронных сетей на Python (numpy) в Visual Studio.  Можете использовать один из 3-х примеров хорошо структурированных программ работы нейронной сети на основе библиотеки  numpy как шаблон для создания собственных приложений.

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

Сама по себе конструкция нейронной сети простая. Самое сложное в ней — это понять алгоритм обратного распространения ошибки и что такое функция потерь (см. также Функции оценки). Посмотрите также статью Эпоха, батч, итерация — в чем различия?

Чтобы определить, насколько вы овладели основами построения нейронных сетей на Python (numpy), прослушайте видеоролик Обучение нейронной сети на Python. Если не все будет понятно, ищите ответы на возникшие вопросы в Google поисковике.

Необходимые навыки инженера по машинному обучению (из вакансии)

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

Требования:

  • Хорошие навыки программирования на Python (плюсом будет знание C ++).
  • Владение numpy, scipy, opencv
  • Более 3 лет опыта создания сетей и обработки данных в Tensorflow, Keras, Torch, Scikit-Learn, MLlib, Pandas, Caffe, Theano.
  • Опыт работы в облачных средах с такими платформами и фреймворками, как AWS, Google BigQuery, Azure Data Lake Analytics, Spark, Kafka,  GCP (Google Cloud Platform), Computer Vision AutoML Tables,
  • Знание компьютерного зрения, обработки изображений и видео, визуальное понимание.
  • Знание аналитических концепций, таких как — регрессия, кластеризация, классификация, модели на основе дерева и / или другие методы машинного обучения.
  • Понимание методов глубокого обучения (CNN, RNN, GAN, обучение с подкреплением)
  • Хорошее понимание машинного обучения: вы должны быть знакомы с процессом (сбор данных, обучение, оценка и внесение итерационных улучшений) построения эффективных систем обучения.
  • Опыт разработки алгоритмов глубокого обучения
  • Навыки письменного и устного общения на английском языке

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

Предпочтения:

Керас, AWS, Python, компьютерное зрение, глубокое обучение

Возможные вопросы на собеседовании относительно вашего опыта:

  1. Какие использовали loss функции для нейросетей?
  2. Какие знаете «backbones» (feature extractor)?
  3. С какими детекторами работали?

Полезные ссылки:

Введение в TensorFlow и Keras

TensorFlow — один из многих пакетов, используемых разработчиками для облегчения работы с машинным обучением и повышения его эффективности. Если раньше (при использовании библиотеки numpy) нам надо было создавать свои классы, чтобы хранить информацию о весах нейрона, объединять их в слои и еще добавлять туда алгоритмы обучения то теперь все это есть в TensorFlow (см. Tensorflow, Python, Visual Studio. Quick start).

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

Подробнее см.  Что такое Tensorflow? Примеры применения (youtube)

Используя TensorFlow вы подниметесь на качественно новый уровень машинного обучения при помощи НС (по сравнению с numpy). Чтобы в этом убедиться, посмотрите видеоролик Обнаружение объектов с использованием Tensor Flow (youtube).

Keras — это API глубокого обучения на Python, которое облегчает использование TensorFlow.

Конструировать нейронные сети на TensorFlow становится проще, если знать о надстройке Keras. Она удобна и отличается простотой прототипирования, чего раньше очень недоставало TensorFlow. API tf.keras понравится всем, кто предпочитает объектно-ориентированное программирование и послойное моделирование нейросетей. За несколько строчек кода можно создать нейросеть прямого распространения с помощью стандартных методов, таких как регуляризация (см. Глубокое обучение для новичков: тонкая настройка нейронной сети).

Keras является API, который может работать поверх TensorFlow , CNTK или Теано. С выпуском Keras 2.3.0 он стал синхронизированным с TensorFlow.  Поэтому в дальнейшем рекомендуется переключить код с пакетами keras через пакеты Tensorflow2.0 (tf.keras…).

Keras — рекомендуемая библиотека для глубокого изучения Python, особенно для начинающих. Его минималистичный, модульный подход позволяет с легкостью построить и запустить глубокие нейронные сети (см. Code examples).

TensorFlow несмотря на свои неоспоримые достоинства имеет и ряд недостатков (см. TensorFlow Sad Story).

Введение в PyTorch

В отличие от большинства других популярных систем глубокого обучения, таких как TensorFlow, которые используют статические графы вычислений, PyTorch использует динамические вычисления, что обеспечивает большую гибкость при построении сложных архитектур. Pytorch использует основные понятия Python, такие как классы, структуры и условные циклы, которые нам знакомы, а значит, более интуитивны для понимания. Это делает его намного проще, чем другие фреймворки, такие как TensorFlow, которые привносят свой собственный стиль программирования (см. Введение в Py Torch)

Примеры программ:

Введение в Scikit-Learn

Библиотека Scikit-Learn ориентирована на моделирование данных (см. Нежное введение в Scikit-Learn). Она построена на SciPy (Scientific Python) — фундаментальная библиотека для научных вычислений. Scikit-learn предоставляет ряд контролируемых и неконтролируемых алгоритмов обучения через согласованный интерфейс с базовыми пакетами Python:

  • NumPy — для работы с n-мерными массивами
  • Matplotlib — для визуализации данных через 2D и 3D графику
  • IPython — улучшенная интерактивная консоль
  • SymPy — символьная математика
  • Pandas- для извлечения, обработки и управления данными

Примеры программ:

Структуры данных. Библиотека Pandas

Библиотека python Pandas — высокоуровневый инструмент управления данными. Информация может храниться в файлах .csv или таблицах SQL. Возможно, в файлах Excel. Или даже файлах .tsv. Или еще в каком-то другом формате. Но цель всегда одна и та же. Если необходимо анализировать данные с помощью pandas, нужна структура данных, совместимая с pandas (Моя шпаргалка по pandas).

Pandas появилась из необходимости в простом инструменте для обработки, извлечения и управления данными. Этот пакет спроектирован на основе библиотеки NumPy. Такой выбор обуславливает успех и быстрое распространение pandas. Он также пользуется всеми преимуществами NumPy и делает pandas совместимой с большинством другим модулей.

Примеры программ:

 Введение в MLlib

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

Примеры программ:

Введение в Caffe

Название Caffe произошло от сокращения «Convolution Architecture For Feature Extraction» (Свёрточная архитектура для извлечения признаков). См. Deep learning tutorial on Caffe technology

Caffe поддерживает много типов машинного обучения, нацеленных в первую очередь на решение задач классификации и сегментации изображений. Caffe обеспечивает свёрточные нейронные сети, RCNN, долгую краткосрочную память и полносвязные нейронные сети.[10] При этом для ускорения обучения применяется система графических процессоров (GPU), поддерживаемая архитектурой CUDA и иcпользующих библиотеку CuDNN от фирмы Nvidia

Примеры программ:

Мои статьи: