1. Предпосылки
В этом году потребовалось некоторое время, чтобы узнать о машинном обучении машинного обучения, чтобы получить общее представление о том, что оно делает и как оно это делает. И выступление на Google I/O 19 по машинному обучению.«Машинное обучение от нуля до героя (Google I/O'19)»Без сомнения, лучшее научно-популярное видео по машинному обучению, которое я когда-либо видел.
Содержание этого видео в основном включает в себя:
- Что такое машинное обучение и чем оно отличается от того, что мы обычно понимаем?
- пример машинного обучения
- Как TF может более эффективно решать сложные задачи в области ML?
- Как вы можете использовать ML
Далее следует несколько заметок о разговоре. Я смотрел его на Youtube и думаю, что такое полезное видео есть и на других сайтах.
2. Что такое машинное обучение?
2.1 Чего мы не можем сделать с помощью обычного программирования?
Предположим, мы пытаемся написать программу для игры в «камень-ножницы-бумага», шаги очень просты:
- Компьютер рандомизирует свои собственные жесты, принимая ваши жесты через камеру.
- Узнав, что ваш жест относится к одному из трех «камень-ножницы-бумага», оцените победителя, сравнив свои собственные жесты.
В этой игре случайные жесты и оценка победы и поражения — наши обычные области программирования, но от图片中获得手势
Как это запрограммировать? Ответ: почти невозможно. Данные, полученные компьютером, представляют собой только двоичные пиксели, и эти правила практически невозможно описать на обычных языках программирования.
Если мы, наконец, признаем, что это ножницы, анализируя расположение пикселей изображения, следующее изображение, которое почти полностью отличается от пикселей, также должно быть признано ножницами. Следовательно, правила в этом поле не программируются. Есть много областей, где входные данные не программируются, например: компьютерное зрение, распознавание речи, обработка естественного языка и т. д. На основе решения этих проблем мы можем создавать ценные приложения, такие как автономное вождение и машинное обслуживание клиентов.
Но это правило полезно, есть ли у нас другой способ получить данные этого правила? Ответ — да, и это область машинного обучения.
2.2 ML: данные + результаты = правила
Как видно из рисунка выше, традиционное программирование规则+数据=结果
. в то время как МЛ数据+结果=规则
рабочем режиме, а затем в производственной среде, затем используйте规则+数据=结果
способ использования. Мы будем называть процесс получения правил как训练 training
, правила, полученные в результате обучения, называютсяmodel
,иmodel
Процесс добавления новых данных становится预测 predict
.
Проект TensorFlow — это платформа для обучения, получения и использования модели. Прохладный!
2.3 Нейронные сети
Последний раздел — это определение и терминология ML.Теперь мы следуем игре «камень-ножницы-бумага» и переходим к анализу нескольких концепций ML о распознавании изображений.
Если компьютер обучает Модель, которая может распознавать жесты, только через большое количество изображений высокой четкости 1980x1080, этот процесс очень неэффективен. нам нужнопомощьКомпьютер выполняет предварительную обработку. Роль этой предварительной обработки состоит в том, чтобы научить компьютер обнаруживать特征 feature
.
Так называемые характеристики представляют собой некоторые размерные данные. Это очень простая для понимания концепция. Например, характеристики людей: кожа, двойные веки, вьющиеся прямые волосы. Если мне нужно научить человека распознавать желтый, черный, белый, то важным признаком мы считаем кожу.
То есть: конкретные проблемы требуют ответа на определенные характеристики. Если мы можем получить множество функций с помощью данных (изображений), мы можем решать различные типы задач и даже решать проблему с помощью нескольких функций Наше правило больше соответствует правильному ответу. (Мы можем более точно идентифицировать чернокожих по цвету кожи + вьющиеся волосы)
2.3.1 Свертки
Так называемое извлечение признаков с помощью определенного алгоритма игнорирует некоторые детали измерения A, увеличивает детали измерения B и получает данные признаков. Как показано на рисунке выше, для связи между пикселями через определенныйалгоритмВычислите новые пиксели и объедините их в новую фотографию, чтобы получить собственное значение. Наши алгоритмы становятсяфильтр, как показано ниже, типично: данные + фильтр = данные объекта. Мы делаем этот процесс卷积
, на самом деле сверткаболее строгое математическое определение, я просто знакомлюсь с ML.
После того, как мы обработаем свертку, некоторые части данных будут выделены и улучшены, которые мы называем данными признаков.На основе этих данных ML может получить признаки, и мы даже не можем понять, как эти признаки помогают компьютеру завершить признание.
ML получает больше функций с помощью свертки, которая может создать изображение, после обработки свертки будет 1000 данных признаков. Эффективная обработка этих признаковых данных становится задачей обучения. В следующем подразделе нам нужно решить эту задачу.
2.3.2 Пул
池化
Роль заключается в сжатии данных без потери функций. Это очень легко понять.Нам нужно идентифицировать "камни" на картинке.На самом деле для идентификации нам достаточно картинки 64х64,а эффект такой же как и 1980х1080.
Точно так же нам нужно пройти池化
чтобы тренироваться более эффективно. Это увеличило бы эффективность в тысячи раз.
Целью объединения является сжатие, и методы очень разнообразны, рисунок выше может напрямую принимать максимальное значение в четыре пикселя. На самом деле, мы в основном не чувствуем, что характеристики содержания изображения изменились из-за объединения, но для компьютера вычислительная эффективность будет значительно улучшена.
2.3.3 Слои
В предыдущем разделе мы кратко представили концепции свертки и объединения Как объединить их в модель?
На приведенном выше рисунке показана архитектура для построения нейронной сети.Первый — входной слой. Вводная ячейка. Свертка и объединение, которые мы представили, находятся на втором и третьем уровнях. После извлечения признаков мы получим некоторые упрощенные данные о признаках. Это то, что мы описываем в подразделах выше.
Последняя скрытая ячейка и выходная ячейка представляют собой состав стандартной нейронной сети. Очень просто понять состав стандартной нейронной сети. Это знание математики средней школы, но его нелегко описать. Рекомендуется узнать об учебнике Wu Enda по машинному обучению.
На данный момент мы, наконец, завершили концептуальное понимание нейронных сетей. Итак, как нам сделать нашу нейронную сеть? Как тренироваться, сохранять, применять? Это то, что делает TensorFlow.
3 TensorFlow
TensorFlow — это фреймворк машинного обучения, и его ценность заключается вУпростите использование обучения машинному обучению, сохранение, применение. То есть, как только мы поймем вышеуказанные знания, мы сможем проверить и применить их с помощью фреймворков и программ.
Конечно, TF — это всего лишь один тип фреймворка машинного обучения, и та же самая теория ML применима и к другим фреймворкам, просто у разных программ есть свой способ ее использования.
Я не могу подробно рассказывать о конкретном использовании TensorFlow, просто перечислю функции, упомянутые в выступлении.
3.1 Определение нейронных сетей и обучение
Вы можете найти множество концепций машинного обучения, которые мы рассмотрели выше, в приведенном ниже коде.
Код очень лаконичный
- Определить модель через tf
- Он содержит много слоев, первый — это слой свертки и слой объединения (причина, по которой все должны знать!)
- Затем он передается на плотный слой для обработки, и, наконец, выводятся 3 узла.
Вся нейронная сеть определена. Простой!
В процессе обучения нам необходимо определитьфункция потери потерииоптимизатор. Это не тайна, они существуют, чтобы свести обучение кправильно и уместностатус. Один как строгий отец, другой как любящая мать, один говорит модели, как она неправа, а другой предлагает способы модификации модели.
Последней посадкой является выполнение тренировки.
После завершения обучения мы обнаружили, что в некоторых слоях будут десятки тысяч параметров Param, а конечный плотный слой будет достигать миллионов. Мы с трудом можем понять эти Парамы,Модель ML полезна, но ее нельзя разделить и объяснить.
Ниже приведено краткое введение в ключевые компоненты и функции TF, которые почти всегда доступны из коробки.
3.2 Визуализация обучения нейронной сети TensorBoard
TF предоставляет компонент визуализации для обучения нейронной сети.
3.3 Распределенное параллельное обучение
Чтобы повысить эффективность обучения, TF поддерживает распределенное обучение.
3.3 Развертывание и применение
Мы не можем просто обучить модель и закончить эксперимент. То, как модель сериализуется и сохраняется после обучения, и как она публикуется, также является возможностью, которую должна поддерживать платформа.
- TensorFlow Serving Это приложение, предоставляемое TF, которое предоставляет интерфейсы gRPC и REST для выполнения задач распознавания моделей. В качестве прикладной службы он эффективен и имеет огромную пропускную способность.
- TensorFlow Lite — это библиотека, предоставленная TF, которая может сохранять модели на некоторых портативных устройствах, таких как Raspberry Pi.
3.3.1 Сохранение модели и загрузка
Как сохранить тоже очень просто, как показано выше. На основе этих нескольких строк кода должно выполняться обучение, сохранение и публикация.
4 учебных материала
На этом конспект лекций по машинному обучению Google завершен. Настоятельно рекомендуется посмотреть оригинальное видео, около 40 минут. У меня самого не так много фундамента ML, и я начинаю, пробую что-то новое. Мои уроки по машинному обучению в основном берутся из следующих источников:
-
Курс машинного обучения Эндрю НгЭто обучающее видео доктора Ву Энда, предназначенное для популяризации машинного обучения, и его можно понять, зная математику в средней школе. Смотрел примерно первую треть.
-
глубокое обучениеJianghu называется «Цветочная книга». Основываясь на курсе доктора Ву Энда, я использовал эту книгу, чтобы глубже изучить основы машинного обучения. Прочитав первую главу, я, вероятно, смогу понять основные концепции.
-
Siraj RavalYoutuber, специализирующийся на видеороликах, связанных с машинным обучением. Если у вас есть предварительное представление о том, что такое ML, и вам не терпится узнать, что он может сделать и как это сделать, я настоятельно рекомендую вам взглянутьКак смоделировать беспилотный автомобиль. Видео научит вас шаг за шагом выполнять сбор данных, обучение, развертывание, применение, и машина в вашей игре запустится автоматически.
By the way
Большое спасибо за то, что прочитали это.Если это удобно, пожалуйста, поставьте лайк и оставьте комментарий, если у вас есть какие-либо комментарии. Спасибо!
В последнее время я серьезно отрабатывал некоторые идеи, некоторые небольшие проекты на основе raspberry, выНажмите, чтобы просмотреть GitHubЯ посмотрю, как я могу сформировать интересные проекты из новичка с помощью строительных блоков.Конечно, ML также является важным строительным блоком. Я тщательно записал каждый шаг, вы сможете скопировать всю мою работу из журнала, и с нетерпением жду вашего выпуска, и надеюсь получить свою звезду!