机器学习算法(八)神经网络——深度学习的基础

前言

随着近年来人工智能技术的飞速发展,以深度学习为代表的 AI 技术越来越成为互联网公司的必争技术高地:百度高调宣布 All In AI,腾讯、阿里、京东均成立 AI Lab。不错,正是由于深度学习的能力十分强大,在各种领域打败传统机器学习算法,加速 AI 技术在各种实际应用场景的落地,尤其是在图像识别、语音识别、自然语言处理(NLP)等领域的识别能力远超传统机器学习算法,甚至在图像识别和语音识别方面已经超过了人类的识别准确度。

深度学习的崛起是 AI 技术的一次伟大的突破。但是这并不意味着深度学习算法有多么的高深莫测难以捉摸。本文介绍的神经网络算法就是你掌握深度学习的基础。因为各种深度学习算法都是来源于传统神经网络算法的思想和结构,只是网络层数加深,网络结构变得更加复杂而已。

神经元与感知机模型

提到神经网络算法,我们就应该讲一下这个算法的产生灵感:生物仿生学——模拟人类大脑计算过程。

神经元简介

学过生物学的都知道,我们人类大脑最基础的神经结构就是神经元(Neuron)。神经元之间通过突触相互连接,无数的神经元相互连接构成神经中枢。神经中枢通过综合各种信号做出判断给出指令,人体器官通过神经中枢的指令,对外部刺激做出反应。
image.png
既然人类思考的基础是神经元,如果能够“人造神经元”(Artificial Neuron),就能组成人工神经网络以模拟思考。上个世纪六十年代,人工智能先行者就提出了最早的”人造神经元”模型,叫做“感知器”(Perceptron),直到今天它仍然在使用。

感知机模型

在了解神经网络算法之前,我们先需要了解一下感知机,因为它是神经网络的基础,因此传统神经网络算法也叫做多层感知机(Multi Layer Perceptron MLP)。它和神经网络的关系就类似于人类大脑中的神经元和神经中枢。
image.png
感知机是二类分类的线性分类模型,其输入是实例的特征向量,输出为实例的类别,通常用+1和-1表示。在特征向量所表示的高维空间中,我们可以把感知机看成是将所有正负样本点进行线性划分的分离超平面。
image.png

神经网络模型

在感知机算法的基础上,我们将多个感知机组合构建如下所示的神经网络。其中我们可以将前一层(按从左到右的顺序)所有变量看成是上述感知机的输入特征向量,而后一层对应的每一个特征都是一个感知机的输出。这样,我们可以将多层感知机看成是一个关于感知机的复合函数。

神经网络基本结构
image.png

image.png
image.png
image.png

前向传播算法
image.png

反向传播算法

image.png

反向传播算法工作流程
image.png

反向传播算法推导
image.png
image.png
image.png
image.png
image.png

神经网络算法实战

from sklearn.neural_network import MLPClassifier
from sklearn import datasets
from sklearn.model_selection import train_test_split

# 加载iris数据集
iris = datasets.load_iris()

X = iris.data
y = iris.target

print('Sample num: ', len(y))

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 模型初始化并训练
clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5), random_state=1)

clf.fit(X_train, y_train)

# 预测结果
ans = clf.predict(X_test)

# 计算准确率
cnt1 = 0
cnt2 = 0
for i in range(len(y_test)):
    if ans[i] - y_test[i] < 1e-5:
        cnt1 += 1
    else:
        cnt2 += 1
print("Accuracy: %.2f %% " % (100 * cnt1 / (cnt1 + cnt2)))

运算结果

Sample num:  150
Accuracy: 100.00 % 

猜你喜欢

转载自blog.csdn.net/datawhale/article/details/81211820
今日推荐