Прочтите демонстрацию, чтобы начать работу с машинным обучением

TensorFlow
Прочтите демонстрацию, чтобы начать работу с машинным обучением

У нас всегда есть ощущение, что машинное обучение имеет высокий порог и его трудно начать. Это потому, что слишком много непонятных понятий, таких как «нейронная сеть», «индекс оценки», «алгоритм оптимизации» и т. д., из-за которых новички всегда чувствуют себя слепыми, трогающими слона. Трудно даже понять официальную демонстрацию Tensorflow, поэтому многие разработчики имеют опыт «машинного обучения от входа до отказа». В этой статье с глобальной точки зрения анализируется официальная демонстрация TensorFlow для достижения эффекта пропуска системы «машинного обучения», чтобы читатели могли увидеть всю картину этого слона и помочь новичкам начать работу с «машинным обучением».

Как понимать системы машинного обучения

Цель «машинного обучения» — использовать существующие ответы, чтобы найти правила для прогнозирования. Это отличается от «традиционной системы» тем, что:

  • Цель «традиционных систем» — получить ответы
  • Цель «машинного обучения» — использовать существующие ответы для получения правил.

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

Подробно объясните демонстрацию машинного обучения

Лучший способ овладеть навыком — использовать его. В этой части давайте взглянем на демонстрацию TensorFlow. TensorFlow — это фреймворк глубокого обучения, запущенный Google, я не буду вводить основную информацию. Что я хочу представить, так это то, как читать эту демонстрацию. Вы можете спросить, демо настолько сложно для понимания? Для новичков в «машинном обучении», если вы не понимаете понятий «нейронная сеть», «функция потерь», «индекс оценки» и т. д., читать демонстрацию действительно сложно.

Взгляните на это демо, там не так много кода, я его весь выложил.

Что вы чувствуете, когда видите всю картину этой части кода?В первый раз, когда я прочитал это, было: «Я могу понять грамматику, но я просто не понимаю, что вы делаете!» Если вы чувствуете то же самое, то я предлагаю вам внимательно прочитать эту статью.Эта демонстрация на самом деле предназначена для обучения модели (модели), которая может распознавать рукописные цифры.Рукописные цифры, которые должны быть распознаны, следующие:

У вас может быть много вопросительных знаков одновременно. Рукописные цифры? Где картина? Как идентифицировать? Не волнуйтесь, позвольте мне подробно объяснить эту демонстрацию ниже.

подготовка данных

Что такое данные в области искусственного интеллекта? Мы можем видеть из названия фреймворка TensorFlow — Flow (поток), образованный Tensor (тензор). В области «искусственного интеллекта» большая часть данных существует в виде тензора, а тензор можно непосредственно понимать как многомерный массив.

Например: передать изображение в модель искусственного интеллекта.Наша первая реакция — сначала оцифровать изображение, использовать Base64 для представления этого изображения или использовать двоичный код и так далее. Но для систем ИИ лучший способ — преобразовать изображения в тензоры. Давайте попробуем использовать Tensor для представленияИзображение размером 3*3 пикселя, белый фон и черная диагональ:

После запуска кода получаем, что диагональ чёрная 33 картинки. ЭтоПредставьте изображение с тензором четвертого порядка, форма тензора(1, 3, 3). Точно так же, если вы хотите представить 6000 листов 2828, то форма тензора(6000, 28, 28).

Теперь читаем код первой части:

"МНИСТ"(Смешанная база данных Национального института стандартов и технологий) — это крупномасштабная база данных рукописных цифр, собранная Национальным институтом стандартов и технологий США. Она содержит обучающий набор из 60 000 примеров и тестовый набор из 10 000 примеров. выглядит так.

Эти картинки хранятся в виде матрицы пространства:

Итак, мы понимаем смысл этого кода, который состоит в том, чтобы получить набор данных для обучения (x_trian, y_train) и набор данных для тестирования (x_test, y_test) из mnist.

  • Форма x_trian (6000, 28, 28) , что означает 6000 изображений 28*28.
  • _trian имеет форму (6000,), представляющую числовой ответ, соответствующий x_train.

Что такое модель

Получив набор данных, можем ли мы начать обучение модели? Не волнуйтесь, нам нужно выяснить, что это за модель Документация Tensorflow определяет модель следующим образом:

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

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

  • Итак, каковы параметры модели?
  • Каковы значения 4 слоев, переданных моделью в демонстрации?

  • Как обучается модель? Если вы хотите знать ответы на эти вопросы, то: «Господин мисс, фитнес-плавание, э-э, нет. Нейронная сеть, узнайте об этом».

Нейронная сеть (нейронная сеть)

Нейронная сеть (Neural Network), как следует из названия, представляет собой сеть (Network), соединенную нейронами (Neuron).Так что же такое нейроны?

Нейроны в машинном обучении происходят из биологических нейронных сетей — биологических нейронов, которые выражают «возбуждение» изменениями электрического потенциала. В области машинного обучения нейрон фактически является вычислительной единицей. Его необходимо ввести, чтобы начать расчет (возбуждение) после N сигналов, эти сигналы черезСвязи с весамиОн передается нейрону, и нейрон вычисляет значение путем взвешенного суммирования. Затем это значение обрабатывается функцией активации для получения вывода, обычно числа, сжатого между 0 и 1.

В демонстрации первый слой должен расширить изображение 28*28 в одномерный массив, содержащий 784 нейрона.

...
# 第一个 Layer
# 神经元展开成一维数组
tf.keras.layers
.Flatten(input_shape=(28, 28)),
...

Второй слой:

...
tf.keras.layers
.Dense(128, activation='relu'),
...

Layer2 передается в параметрахactivation='relu', что означает использование relu в качестве функции активации. Давайте сначала разберемся, что такое «функция активации»,

Когда наш мозг получает много информации одновременно, он изо всех сил пытается понять и разделить информацию на «полезную» и «менее полезную». В случае нейронных сетей нам нужен аналогичный механизм для классификации поступающей информации как «полезной» или «менее полезной». Это важно для машинного обучения, потому что не вся информация одинаково полезна, некоторая информация — просто шум. Это роль функций активации, которые помогают сети использовать важную информацию и подавлять нерелевантные точки данных. Например, в Demo Layer1 выводит 784 нейрона, не все из которых активированы. Только активированные нейроны могут стимулировать Слой 2, а слой 4 выдает 10 нейронов, из которых активируется второй нейрон, что указывает на то, что вероятность результата распознавания 1 составляет 99%.

Итак, relu — это своего рода функция активации, которая используется для активации нейронов — по стимуляции, заданной предыдущим Слоем, вычисляется номер последнего выхода (отображения) нейрона. Слой Layer2 имеет 128 нейронов, эти 128 нейронов будут связаны с 728 нейронами в Layer1, всего будет сгенерировано 128 нейронов.728 * 128 =93184Вес разный для каждого соединения. Выходы нейронов в слое 1 будут взвешены и суммированы с весами, связанными со слоем 2, и результат будет принят в расчет.reluфункцию и, наконец, вывести новое значение в качестве вывода нейрона в Layer2.

третий слой

...
  tf.keras.layers.Dropout(0.2),

Основная роль выпадающего слоя — предотвратить переоснащение. Основными проявлениями феномена переходной подгонки являются:Окончательная модель хорошо работает на тренировочном наборе, но плохо работает на тестовом наборе. Способность модели к обобщению слабая.Один из способов, с помощью которого Dropout решает проблему переоснащения, заключается в случайном удалении нейрона. Демо использует Dropout для случайного удаления 20% нейронов.

Четвертый слой

...t
tf.keras.layers
.Dense(10, activation='softmax')
...

На Layer4 есть 10 нейронов, и они используютsoftmaxВ качестве функции активации выход этих 10 нейронов является результатом последнего узла. На следующем рисунке показан весь процесс распознавания рукописной цифры 1. Нейроны в каждом слое активируются слой за слоем, и, наконец, выводится результат предсказания.

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

Дополнение к обучению модели

Чтобы понять этот код, мы должны сначала понять, что такое по аналогии:Функция потери (функция потери),Алгоритмы оптимизации,Метрики оценки ( Метрики оценки )Если мужчина хочет начать заниматься спортом, его цель — получить бюст 120 см и выглядеть стройно (не слишком большим):

  • После неоднократных тренировок его бюст достиг 110см, тогда можно поставитьLoss = |目标(120cm)- 当前(110cm)|В качестве простейшей функции потерь (Loss Function). **Функция потерь в демонстрации использует перекрестную энтропию разреженной категории (sparse_categorical_crossentropy), этот алгоритм характеризуется хорошей классификацией.
  • О том, достигнута ли цель, нельзя судить, просто используя функцию потерь. Форма тела и красота также очень важны, и роль показателей оценки (Evaluation Metrics) дает нам стандарт судейства.
  • Далее, нам нужно найти закон, который производит Потерю.Потеря - это не только потеря бюста менее 130 см, но и потеря эстетики, вызванная бюстом более 130 см, также является частью Потери. Поэтому для достижения наилучших результатов нельзя тренироваться ни слишком легко, ни слишком усердно. Мы придаем различный вес (Weights) тренировочным элементам: вес протеиновой добавки w0, интенсивность тренировки верхней грудной мышцы w1, интенсивность тренировки средней грудной мышцы w2, интенсивность тренировки нижней грудной мышцы w3, интенсивности аэробных упражнений w4 и т. д. присваиваются разные веса. Наконец, получите набор [w1, w2...wn] . А путем непрерывной регулировки [w1, w2...wn] для получения наилучшего метода тренировки грудных мышц осуществляется алгоритм оптимизации (алгоритмы оптимизации). После понимания модели, слоя, веса, алгоритма оптимизации, функции потерь и показателей оценки нейронной сети мы можем прочитать код в демо. Теперь попробуйте нарисовать схему рабочего процесса нейронной сети, серию рабочих процессов нейронной сети.

тренируйся и тестируй

Эту часть легко понять, просто введите данные для обучения и тестирования. скажите что-тоepochs. В области нейронных сетей эпоха относится к одному циклу обучения на всем наборе обучающих данных.1 эпоха = 1 проход вперед + 1 проход назад(Мы можем просто понять, что цель прямого распространения — получить результаты предсказания, а цель обратного распространения — настроиться на оптимальные веса, чтобы минимизировать потери.)

Эпохи = 5 в демонстрации, потому что одна эпоха может не получить оптимальные веса. Так как 1 раз не может быть выполнено, то будет 5 раз, а если не выполнено 5 раз, то будет 10 раз, пока эффект Убытка не будет минимизирован и эффект Убытка не изменится.


Суммировать

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


Исходный код статьи

Если вы считаете, что эта статья была вам полезна после ее прочтения, обратите внимание на мой публичный аккаунт «Dongze Chat Technology», большое вам спасибо.