深度学习基础网络组件介绍
- 网络组件
- 网络结构-全连接层
- 激活函数
- 常见激活函数-Sigmoid
- 常见激活函数-tanh
- 常见激活函数-Relu
- 常见激活函数-Gelu
- 常见激活函数-Softmax
- 损失函数
- 损失函数-均方差
- 损失函数-交叉熵(Cross Entropy)
网络组件
**释义:**一个大的人工智能模型,可以理解为搭积木,通过不同的组件组合构建成整个模型。本质上可以通过深度学习的流程图去划分,只是不同的部分,进行了不同层度的丰富而已。
网络结构-全连接层
介绍:
1.又叫线性层
2.计算公式:y = w*x +b
3.w、b都是可以训练的参数,并且不是简单的数字,而是矩阵或者是向量
4.w的维度决定了隐含层输出的维度,一般称为隐含层单元个数(hidden size)
举例:
输入:x (维度1 x 3)
隐含层1:w (维度3 x 5)
隐含层2:w (维度5 x 2)
代码示例:(待后续补充)
激活函数
作用:
1.前面的线性函数,我们知道图像是一个直线,这样的图像对于很多曲线的情况,没有办法去模拟这个规律,所以由激活函数
2.激活函数使得,模型通过前面的线性函数后,在进行激活函数,就可以模拟曲线的规律,即拟合非线性函数的能力
无激活函数时y = w1(w2(w3 * x + b3) +b2) + b1 仍然是线性函数
举例: 例如原来的孩子学习理科的天赋不强,那么我通过给他装一个计算机,使得他的计算天赋增加,就和我们这里加激活函数一样。
如下图示例:
常见激活函数-Sigmoid
图像如下图:
公式为:
释义: 可以很明确的看到,线性层计算后,带入到激活函数中,即待入到公式中的x中,图像就是一个曲线。
常见激活函数-tanh
示意图:
公式如下:
常见激活函数-Relu
释义: 虽然看起来上述的激活函数,是由两条直线构成的,但是在较大的模型中,由于神经元层数较多,经过多轮的激活后,就能达到意想不到的效果。
举例: 就像没有锻炼和每天都锻炼10分钟,虽然看起来锻炼的不多,但是时间久了,与不锻炼却会有天壤之别;就和有上面的激活函数和没有一样。
常见激活函数-Gelu
常见激活函数-Softmax
释义: Softmax激活函数呢,又叫归一化操作,简单来说,就是把上一个输入的向量,通过归一化后,使得向量中的每一个数字的和为1;这就可以和概率结合了。
举例: 原来这个孩子只有讲中文的天赋,于是给他加了一个翻译器,使得他讲的中文可以转化为英文,这样就可以满足说英文的情况了;这个翻译器就是 Softmax。
作用:
归一化操作常用于涉及到概率的相关操作,因为有下面的公式可以知道,通过归一化后,值的和为一
应用场景:当出现输出的向量中,每一个数字代表的是一种可能性时,比如[2,4,3];向量中第1号数字代表男、第2代表女、第3代表不男不女,
那么模型判断结果更倾向于女,因为数字更大;但是不够准确,我们可以通过归一化,得到模型判断为三类的具体概率,这就是具体的作用
公式如下
损失函数
释义: 损失函数,就是计算loss值得,即模型得预测值和真实值之间得差距。
举例: 简单理解就是孩子得反思能力,让他去做一件事,他会比较一下完成之后的结果和要求达到的效果之间的差距。好方便他调整以后做相同事的方案。
损失函数-均方差
释义: 即模型预测值和真实值之间的差,进行平方;然后根据样本数量,求平均。有时候会求和而不是求平均,具体根据情况而定。对均方差开根号,可以得到根方差。
适合场景: 输出结果为浮点数的情况。
公式如下:
损失函数-交叉熵(Cross Entropy)
适用场景: 适用于分类任务,即分类任务中,网络输出的经常是所有类别上的概率。比如上面说的,使用了激活函数Softmax,那么得到的就是一个向量各个元素和为1的输出,即分别代表各位置的概率。
举例说明:
1.我们说的
一个分类任务,区分的类型分别为男、女、不男不女
;那么我们可以理解其输出肯定会通过Softmax,得到例如:[0.5,0.4,0.1]这样的情况。
2.那么如果这个真实的结果就是女,那么我们的真实值就是:[1,0,0];这个时候,
我们就需要通过交叉熵去计算,预测值和输出值之间的差距了
公式:
上述例子的计算详情:
注意
在pytroch框架中,进行交叉熵计算前,会自动先进行softmax。