Глубокое обучение с помощью Python: Руководство по глубокому обучению для начинающих



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

- одна из самых горячих тем 2018-2019 гг., и не зря. В отрасли было так много достижений, что пришло время, когда машины или компьютерные программы фактически заменяют людей. Эта Глубокое обучение с помощью Python Статья поможет вам понять, что такое глубокое обучение и как этот переход стал возможным. В этой статье я затрону следующие темы:

Наука о данных и ее компоненты

Что ж, Data Science существует уже много лет. Наука о данных извлечение знаний из данных с использованием различных методов и алгоритмов.





Хронология искусственного интеллекта - Глубокое обучение с помощью Python - Edureka

это техника, которая позволяет машинам имитировать человеческое поведение. Идея искусственного интеллекта довольно проста, но увлекательна: создание интеллектуальных машин, способных принимать решения самостоятельно. В течение многих лет считалось, что компьютеры никогда не смогут сравниться с мощностью человеческого мозга.



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

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



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

массив объектов java

Потребность в глубоком обучении

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

  • Алгоритмы машинного обучения не может обрабатывать многомерные данные - где у нас большое количество входов и выходов: круглые тысячи измерений. Обработка и обработка данных такого типа становится очень сложной и ресурсоемкой. Это называется Проклятие размерности.

  • Еще одна проблема заключалась в том, чтобы указать особенности для извлечения . Это играет важную роль в прогнозировании результата, а также в достижении большей точности. Поэтому без извлечения признаков Задача для программиста возрастает, поскольку эффективность алгоритма во многом зависит от того, насколько проницателен программист.

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

Что такое глубокое обучение?

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

Как вы знаете,наш мозг состоит из миллиарды нейронов что позволяет нам делать удивительные вещи. Даже мозг маленького ребенка способен решать сложные задачи, которые очень сложно решить даже с помощью суперкомпьютеров. Итак, как мы можем достичь той же функциональности в программе? Вот где мы понимаем Искусственный нейрон (персептрон) и Искусственная нейронная сеть.

Персептрон и искусственные нейронные сети

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

  • Дендрит: Получает сигналы от других нейронов
  • Тело клетки: Суммирует все входы
  • Аксон: Он используется для передачи сигналов в другие ячейки

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

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

  • Суммирование
  • Преобразование (активация)

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

Функции активации переводит входы в выходы. Он использует порог для вывода. Есть много функций, которые используются в качестве функций активации, например:

  • Линейность или идентичность
  • Единица или двоичный шаг
  • Сигмовидная или логистическая
  • Тань
  • ReLU
  • Софтмакс

Хорошо. если вы думаете, что Perceptron решает проблему, то вы ошибаетесь. Были две основные проблемы:

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

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

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

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

Теперь, когда у вас есть представление о том, как ведет себя перцептрон, о различных задействованных параметрах и о разных уровнях нейронной сети, давайте продолжим этот блог Deep Learning with Python и рассмотрим несколько интересных приложений Deep Learning.

Приложения глубокого обучения

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

  • Распознавание речи

  • Машинный перевод

  • Распознавание лиц и автоматическая маркировка

  • Виртуальные личные помощники

  • Самостоятельное вождение автомобиля

  • Чат-боты

Почему Python для глубокого обучения?

  • один из таких инструментов, обладающий уникальным свойством - быть язык программирования общего назначения как быть легко использовать когда дело доходит до аналитических и количественных вычислений.
  • Это очень Легко понять
  • Python - это Динамически набираемый
  • Огромный
  • Огромный выбор библиотек для разных целей, например Numpy, Seaborn, Matplotlib, Pandas и Scikit-learn

Теперь достаточно теории. Давайте посмотрим, как мы можем начать глубокое обучение с помощью Python на небольшом, но интересном примере.

Глубокое обучение с помощью Python: пример персептрона

Теперь я уверен, что вы, ребята, должны быть знакомы с работой ' ИЛИ' Ворота. На выходе один если любой из входов также один.

Следовательно, перцептрон можно использовать в качестве разделителя или линии решения, которая разделяет входной набор логического элемента ИЛИ на два класса:

Класс 1: Входы с выходом 0, который находится ниже линии решения.
Класс 2: Входы с выходом 1, который находится над линией решения или разделителем.

как использовать aws cli

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

Математически перцептрон можно представить как уравнение весов, входных данных и смещения.

Шаг 1. Импортируйте всю необходимую библиотеку

Здесь я собираюсь импортировать только одну библиотеку, т.е. TensorFlow

импортировать тензорный поток как tf

Шаг 2. Определите векторные переменные для ввода и вывода

Затем нам нужно создать переменные для хранения ввода, вывода и смещения для перцептрона.

train_in = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] train_out = [[0], [1], [1], [1]]

Шаг 3. Определите переменную веса

Здесь мы определим тензорную переменную формы 3 × 1 для наших весов и сначала присвоим ей некоторые случайные значения.

w = tf.Variable (tf.random_normal ([3, 1], seed = 15))

Шаг 4. Определите заполнители для ввода и вывода

Нам нужно определить заполнители, чтобы они могли принимать внешние входные данные во время выполнения.

x = tf.placeholder (tf.float32, [None, 3]) y = tf.placeholder (tf.float32, [None, 1])

Шаг 5: Расчет выходной мощности и функции активации

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

вывод = tf.nn.relu (tf.matmul (x, w))

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

Шаг 6. Рассчитайте стоимость или ошибку

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

loss = tf.reduce_sum (tf.square (вывод - y))

Шаг 7. Минимизируйте ошибку

Цель перцептрона - минимизировать потерю, стоимость или ошибку. Итак, здесь мы собираемся использовать оптимизатор градиентного спуска.

optimizer = tf.train.GradientDescentOptimizer (0,01) train = optimizer.minimize (потеря)

Шаг 8: инициализируйте все переменные

Переменные определяются только с tf.Variable. Итак, нам нужно инициализировать определенные переменные.

init = tf.global_variables_initializer () sessions = tf.Session () sessions.run (инициализация)

Шаг 9: обучение персептрона в итерациях

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

для i в диапазоне (100): sessions.run (train, {x: train_in, y: train_out}) cost = sess.run (loss, feed_dict = {x: train_in, y: train_out}) print ('Epoch-- ', i,' - убыток - ', стоимость)

Шаг 10: Вывод

……

……

Как видите, убыток начался с 2,07 и закончился в 0,27

.

Глубокое обучение с помощью Python: создание глубокой нейронной сети

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

Мы собираемся использовать набор данных MNIST. Набор данных MNIST состоит из 60,000 обучение образцы и 10000 тестов образцы рукописных цифровых изображений. Изображения имеют размер 28 × 28 пикселей и выход может находиться между 0-9 .

Задача здесь - обучить модель, которая сможет точно идентифицировать цифру, присутствующую на изображении.

Во-первых, мы собираемся использовать приведенный ниже импорт, чтобы перенести функцию печати из Python 3 в Python 2.6+. Операторы __future__ должны находиться в верхней части файла, потому что они меняют фундаментальные вещи в языке, и поэтому компилятор должен знать о них с самого начала.

from __future__ import print_function

Ниже приведен код с комментариями на каждом этапе.

# Импортировать данные MNIST из tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets ('/ tmp / data /', one_hot = True) импортировать тензорный поток как tf import matplotlib.pyplot as plt # Параметры learning_rate = 0.001 training_epochs = 15 batch_size = 100 display_step = 1 # Параметры сети n_hidden_1 = 256 # Количество функций 1-го уровня n_hidden_2 = 256 # Количество функций 2-го уровня n_input = 784 # Ввод данных MNIST (img shape: 28 * 28) n_classes = 10 # Всего классов MNIST ( 0–9 цифр) # tf Graph input x = tf.placeholder ('float', [None, n_input]) y = tf.placeholder ('float', [None, n_classes]) # Создаем модель def Multilayer_perceptron (x, weights , biases): # Скрытый слой с активацией RELU layer_1 = tf.add (tf.matmul (x, weights ['h1']), biases ['b1']) layer_1 = tf.nn.relu (layer_1) # Скрытый слой с активацией RELU layer_2 = tf.add (tf.matmul (layer_1, weights ['h2']), biases ['b2']) layer_2 = tf.nn.relu (layer_2) # Выходной слой с линейной активацией out_layer = tf. матмуль (слой _2, weights ['out']) + biases ['out'] return out_layer # Сохранить вес слоев и веса смещения = {'h1': tf.Variable (tf.random_normal ([n_input, n_hidden_1])), 'h2' : tf.Variable (tf.random_normal ([n_hidden_1, n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_hidden_2, n_classes]))} biases = {'b1': tf.Variable (tf. random_normal ([n_hidden_1])), 'b2': tf.Variable (tf.random_normal ([n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_classes]))} # Построить модель pred = Multilayer_perceptron (x, weights, biases) # Определить потери и стоимость оптимизатора = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, labels = y)) optimizer = tf.train.AdamOptimizer (learning_rate = Learning_rate) .minimize (cost) # Инициализация переменных init = tf.global_variables_initializer () # создание пустого списка для хранения истории затрат и истории точности cost_history = [] precision_history = [] # Запуск графика с помощью tf.Session () в качестве sessions: sessions.run (init ) # Цикл обучения для эпохи в диапазоне (training_epochs): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # Перебрать все партии для i в диапазоне (total_batch): batch_x, batch_y = mnist.train.next_batch (batch_size) # Выполнить оптимизацию op (backprop) и стоимость op (чтобы получить значение потерь) _, c = sess.run ([optimizer, cost], feed_dict = {x: batch_x, y: batch_y}) # Вычислить средний убыток avg_cost + = c / total_batch # Отображать логи на шаг эпохи, если epoch% display_step == 0: right_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Вычислить точность precision = tf.reduce_mean (tf.cast (правильное_предсказание, 'float') ) acu_temp = precision.eval ({x: mnist.test.images, y: mnist.test.labels}) # добавить точность в список precision_history.append (acu_temp) # добавить историю затрат cost_history.append (avg_cost) print ('Эпоха:', '% 04d'% (эпоха + 1), '- cost =', '{: .9f}'. Format (avg_cost), '- Accuracy =', acu_temp) print ('Оптимизация завершена! ') # построить историю затрат plt.plot (cost_history) plt.show () # построить историю точности plt.plot (precision _history) plt.show () # Тестовая модель corrective_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Вычислить точность precision = tf.reduce_mean (tf.cast (правильное_предсказание, ' float ')) print (' Точность: ', precision.eval ({x: mnist.test.images, y: mnist.test.labels}))

Вывод:

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

Эдурека курируется профессионалами отрасли в соответствии с отраслевыми требованиями и требованиями. Вы освоите такие концепции, как функция SoftMax, нейронные сети автоэнкодера, ограниченная машина Больцмана (RBM) и будете работать с такими библиотеками, как Keras и TFLearn. Курс был специально подготовлен отраслевыми экспертами с тематическими исследованиями в режиме реального времени.

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев «Глубокого обучения с Python», и мы свяжемся с вами.