[Stove AI] Deep Learning 001-Basic Unit of Neural Network-Perceptron

машинное обучение искусственный интеллект глубокое обучение Нейронные сети

[Stove AI] Deep Learning 001-Basic Unit of Neural Network-Perceptron

(Библиотеки Python и номера версий, используемые в этой статье: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2)

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


1. Введение в перцептроны

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

Персептрон — ранняя модель нейронной сети, которая была предложена американским ученым Ф. Розенблаттом в 1957 г. В персептроне впервые было введено понятие обучения, благодаря чему функция обучения человеческого мозга достигла определенного уровня в математике на основе обработка символов, степень симуляции, поэтому она привлекла всеобщее внимание.

Структура персептрона:

1. Вход: персептрон имеет один или несколько входов для получения значений признаков.

1. Вес. Каждый ввод имеет вес, который представляет влияние этого ввода на результат.

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

3. Выход: после расчета будет дан один или несколько выходов.

С точки зрения непрофессионала, персептрон похож на сложную функцию y=f(u,v), где u и v — характеристические значения входных данных, f представляет собой комбинацию весов и смещений, то есть процесс вычисления, у для вывода. Итак, персептрон можно представить следующей формулой.

где x представляет вход, w — вес, sita — смещение, f — функция активации, а v — выход. Следовательно, персептрон можно понимать как более сложную функцию.


2. Обучение персептрону

Если мы хотим сопоставить ряд данных прямой линией, предполагая, что уравнение прямой линии имеет вид y=a*x+b, то все, что нам нужно сделать, это вычислить наиболее подходящие a и b. Точно так же, поскольку в функции персептрона есть две неизвестные переменные (вес и смещение), нам нужно вычислить наиболее подходящий вес и смещение, и этот процесс вычислений является обучением персептрона.

Обучение персептрона основано на правиле персептрона.Правило персептрона утверждает, что если входная функция выборки линейно разделима, алгоритм обучения персептрона может сходиться для получения правильных весов и смещений после конечного числа итераций.То есть, нет независимо от того, какие веса и смещения были в начале, после N итераций вы всегда можете получить уникальный детерминированный вес и уникальное детерминированное смещение. Вот почему мы изначально устанавливаем веса и смещения на случайные числа или 0.

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

Для математического вывода и базовой теории персептрона вы можете обратиться к сообщению в блоге:Восприятие

Итак, как обучить персептрон из кода? Перед запуском следующего кода установите модуль нейролаборатории с помощью команды pip install neurolab.

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

# 建立感知器模型
import neurolab as nl
perceptron = nl.net.newp([[dataset_X[:,0].min(),dataset_X[:,0].max()], # 指定特征1的最小和最大值
                          [dataset_X[:,1].min(),dataset_X[:,1].max()]], # 特征2的min和max
                          1) # 只有1个感知器
# 为了适合于train,需要将dataset_y处理成二维
dataset_y=dataset_y[:,np.newaxis]
cost=perceptron.train(dataset_X,dataset_y,epochs=50,show=10,lr=0.01) 
# 训练该单个感知器,50个回合,每10个回合显示一下训练结果,学习速率为0.01

# 显示下训练过程中cost的变化趋势
plt.plot(cost)
plt.xlabel('Number of epochs')
plt.ylabel('Training cost')
plt.grid()
plt.title('Training cost progress')

########################резюме########################## ######

1. Аспект персептрона в основном заключается в понимании его основного значения и теоретических знаний, потому что персептрон является базовой единицей нейронной сети.

2. Обучение персептрона не очень полезно в будущем глубоком обучении.Как правило, зрелые фреймворки глубокого обучения интегрировали эту часть контента, которая используется только для демонстрации.

#################################################################


Примечание. Эта часть кода была загружена в (мой гитхаб), добро пожаловать на скачивание.

Использованная литература:

1. Классические примеры машинного обучения Python, Пратик Джоши, перевод Тао Цзюньцзе и Чена Сяоли.