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

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

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

Для чего нужно машинное обучение?

Одно из самых больших различий между машинным обучением и обычным программированием заключается в том, что алгоритмы машинного обучения неточны. Успех данного алгоритма обычно оценивается по тому, какая часть тестовых данных обрабатывается правильно, а не по тому, удается ли алгоритму быть полностью правильным. Это означает, что программы машинного обучения могут быть уместны там, где требуется нечеткость (например, предлагая пользователю что-то, поиск в данных или интерпретация всего, что делают люди), но, вероятно, их следует избегать там, где уже известны точные детерминированные алгоритмы.

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

Какие ресурсы доступны?

В Интернете огромное количество материалов о машинном обучении, но недавно я прослушал несколько курсов Coursera, которые могу порекомендовать:

  • Машинное обучение от Стэнфордского университета - более общий курс, охватывающий широкий спектр алгоритмов и приложений машинного обучения. Это также рекомендовалось на семинаре по машинному обучению, который провела Эми Николсон во вторник.
  • Нейронные сети для машинного обучения от Университета Торонто. Особенно примечателен тем, что его преподает Джеффри Хинтон, который был на переднем крае исследований в области машинного обучения в течение последних нескольких десятилетий. Этот курс немного сложнее, и я еще не закончил, но он гораздо более подробно описывает различные типы нейронных сетей.

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

  • Обучение программированию: машинное обучение для введения в программу. Большинство алгоритмов машинного обучения генерируют модели черного ящика, которые трудно интерпретировать, но Александр Гонт описывает, как можно создавать программы, понятные людям.
  • Машинное обучение для художников. Отличный обзор различных тем машинного обучения, а также некоторая интуиция о том, как могут работать нейронные сети. В видеороликах Джина Когана также обсуждается использование алгоритмов машинного обучения для создания контента (например, фотографии зебры справа) в дополнение к простой интерпретации существующих данных.
  • Семинар Эми Николсон познакомил нас с широким спектром сервисов машинного обучения, доступных в Azure, которые включают в себя несколько очень простых интерфейсов REST, которые легко использовать: см. Azure.microsoft.com/en-gb/services/cognitive-services для получения дополнительной информации Детали.

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