机器学习入门笔记13

深度学习与神经网络基础

系列文章

深度学习与神经网络模型基础

深度学习是机器学习的一个分支,在数据量很大时其满足的场景更多,应用范围更广。

深度学习的框架基础是神经网络,准确地说是多层隐藏层的深度神经网络。

神经网络模型

原理

神经网络模型本质是在模仿人类大脑的思维方式,通过构造神经元与传递兴奋过程来模拟思考。

下图展示了神经网络的基本模型:

图片来源:https://www.astroml.org/book_figures/chapter9/fig_neural_network.html

它包括输入层、隐藏层和输出层神经元,接收信号的一组神经元通过线性变换和非线性激活函数(activation function)转换来修改信号,并传递给下一组神经元。

仅由输入层和输出层构成的简单神经网络称为单层神经网络模型。其输出层信号的计算分为两步:

第一步,对输入的信号加权平均:

\\[ y'=W_1X_1+W_2X_2+\dots+W_nX_n \\]

第二步,对加权平均的结果使用激活函数 \\( \Phi (x) \\) 非线性转换:

\\[ y=\Phi(y') \\]

在神经网络中,常用的非线性转换激活函数有 Sigmoid 函数、Tanh 函数、Relu 函数:

该函数将取值为 \\( (-\inf,+\inf) \\) 转换到 \\( (0,1) \\) 之间。

采用 Sigmoid 函数的单层神经网络模型就是回归模型。由于 Sigmoid 函数在梯度下降时会出现梯度消失,且均值是 0.5 而非 0 ,不利于下一层的输出。

该函数将取值为 \\( (-\inf,+\inf) \\) 转换到 \\( (-1,1) \\) 之间。

该函数同样存在梯度消失的问题,但是它的均值为 0 。

该函数是分段函数,当输入为正数时可以弥补梯度消失的问题。它的计算速度会快一些。该函数在神经网络模型中应用范围相对较广。

简单代码实现

Scikit-Learn 库封装了神经网络模型,可以简单地调用:

from sklearn.neural_network import MLPClassifier
model = MLPClassifier()
model.fit(X, Y)

这里的神经网络模型也有分类和回归两种模型。

神经网络模型学习速度快,预测效果好,但是相比传统的机器学习模型可解释性不高,因此常常被称为“黑盒模型”。