机器学习之神经网络Neural Network

第一部分:基本含义

神经网络(Neural Network)是一种模仿人脑神经元连接方式的机器学习模型,用于处理复杂的非线性问题。通过大量的参数和层级结构,神经网络可以学习数据中的特征,应用于分类、回归等任务。

机器学习和人类实现人生巅峰的例子对比:

如果把人比作神经网络,一次次摔倒就是反复训练,每一次的爬起,在绝望中寻找希望,都是为登上巅峰做准备。(失败乃成功之母)

神经网络和决策树之间的联系:

我们把上图旋转90度后:

        

神经网络可以看作是多个决策树的集合,或者多个简单模型的组合。不同层级的神经元会通过复杂的连接和权重共同作用,类似于多叉决策树的结构,逐层处理数据。

只不过:单个决策树是非参数模型,而神经网络是参数模型。

第二部分:神经网络核心思想和原理

(1)单个神经元模型(感知机)

x1​,x2​,...,xn​ 是输入的特征,每个输入特征都有相应的权重 w1,w2,...,wn。权重决定了该输入对神经元输出的重要性。

wx这些参数也可以转化为矩阵表示的形式:

因此,神经元模型本质上就是一个线性模型外侧套一个激活函数,有时也叫做感知器模型perceptron或者叫做感知机模型。

(2)神经网络(多层感知机MLP)

神经元是神经网络的基本构建单元,而神经网络是由大量神经元互相连接组成的一个系统。

一般来说,一个神经网络由3层组成,输入层隐藏层、和输出层。输入层接收原始数据,隐藏层通过神经元进行特征提取,输出层生成最终的预测或分类结果。

如果纯是线性,那么随着隐藏层个数的增加,所有的线性运算都可以回归到输入和输出这两个里面(矩阵运算);同时,层数也不是越多越好,有些时候,随着层数的增加,训练效果反而不好了,称为“退化”

为了防止上述问题的产生,我们就需要用到激活函数层。

(3)激活函数层

Step Function(阶跃函数):当输入大于等于 0 时输出 1,否则输出 0。

Sigmoid Function(Sigmoid 函数):在输入值较大时输出接近 1,较小时输出接近 0,输入在 0 附近时输出接近 0.5。

 ③tanh函数(sigmoid函数的优化版)

sigmoid在0.5这作为分类标准,收敛慢,而且还很有可能会出现梯度消失的情况,因此,出现了tanh函数:

tanh 函数可以通过对输入的 2 倍应用 sigmoid 函数,然后乘以 2 再减去 1 来实现。

tanh是在0这作为分类标准。而且tanh函数关于原点对称,而sigmoid函数全部图像都在x轴上面,就没有原点对称。

而且sigmoid和tanh的导数图像也不一样(峰值):

tanh函数能够解决sigmoid函数收敛慢的问题,但是它们的导数图像长相上比较像,因此tanh无法解决sigmoid梯度消失的问题。

④ReLU Function(ReLU 函数)(目前最好用的函数):当输入大于等于 0 时输出输入值本身,小于 0 时输出 0。(能够解决sigmoid和tanh梯度消失的问题)

同时由于relu函数是线性的,计算上比sigmoid和tanh要快,也就解决了sigmoid收敛慢的问题。

relu函数的缺点(死亡神经元问题):

也就是当输入持续为负的时候,那么结果一直都是0。

relu的变体:

⑤(单个神经元)激活函数层的具体位置

⑥将激活函数层应用到神经网络中

⑦为什么激活函数能够实现优化效果?他的意义何在

我们前面说过,激活函数的主要作用就是将线性输出转化为非线性,那为什么要这么做呢?

首先,我们用的这个神经网络是由多个神经元组成的,每一个神经元本质上又是一个线性方程,那多个线性方程在一块(如果不加激活层),效果将会是:

但是我们实际想要的可能是:

因为没有归于绝对的直线分类标准,全是直线的网络就很难真正拟合数据,而且直线越来越多就会造成模型退化问题,也就是(2)中提到的。

使用了激活函数之后,线的变化形式有很多了,这样模型的拟合能力就会大大提升,模型的表达能力更强了,也就能更好地反映数据真实的分类情况。

⑧如何选择激活函数

不要把各种激活函数串联到一个网络中使用,不然模型很可能难以收敛。

如果使用relu,小心设置学习率,如果死亡神经元过多,可以试试relu的变体。

尽量不要使用sigmoid,可以试试tanh.

(4)归一化层操作softmax层

经过了上述的激活函数,得到了经过非线性变换之后的数值,但是如果我们想要让数据更加的美观,比如将输出的数据能够映射到0~1这个范围,并且这些值的和为1(转化成概率分布的形式),那么我们就需要在最后再进行一次归一化操作。

再度更新优化神经网络流程图:

softmax函数和sigmoid函数的联系:

由于sigmoid的输出范围也是0~1,就跟softmax又非常相像了:

①二分类时,这两个一样

②sigmoid主要用于多标签分类(正确答案可能有多个)

③softmax函数主要用于但标签多分类问题(正确答案只有一个)

(5)损失函数的应用

由于上面我们经过softmax之后,输出的结果是以概率的形式,那么我们就可以用交叉熵损失函数,它的计算就是以概率为基础的,详细可见我博客:机器学习之损失函数大汇总~MSE+MAE+对数损失函数+交叉熵损失函数-CSDN博客

我们的最终目的就是最小化这个交叉熵损失函数,来评估并优化模型。

(6)反向传播

反向传播的核心是通过链式法则计算损失函数关于每个神经元参数(权重和偏置)的梯度。这个过程从输出层开始,逐层向后计算梯度,直到输入层。通过梯度下降法,更新各层的权重和偏置。

(7)不同的神经网络之间的核心差异

①三层网络结构的不同

②损失函数的类型有什么不同

③求解损失函数的过程有什么不同,梯度下降搜索策略上的差异

④对模型过拟合问题的解决方式不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还不秃顶的计科生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值