ai(六)-深度学习
深度学习三步骤
和机器学习一样,深度学习也是有三个步骤:
- Step1:神经网络(neural network)
- Step2:模型评估(Goodness of function)
- Step3:选择最优函数(Pick the best function)
Step1:神经网络
![![[ai/attachment/Pasted image 20260327201833.png]]](https://i-blog.csdnimg.cn/direct/fd199415e3da4de699adb48c91c3e646.png)
神经网络有很多不同的连接方式→\rightarrow→ 不同的结构
完全连接前馈神经网络:
概念:前馈(feedforward)也称为前向。也就是输入信号进入网络后,信号流动是单向的。信号从前一层流向后一层,直到输出层,其中任意两层件没有反馈(feedback),信号不会从后一层回到前一层。![![[ai/attachment/Pasted image 20260327203507.png]]](https://i-blog.csdnimg.cn/direct/2f75a9d5c8194df599476eef897b0525.png)
输入层:1层
隐藏层:N层
输出层:1层
全连接:Layer1和Layer2之间两两都有连接
前馈:从前一层往后一层传播
深度学习为什么被称为深度?深度=隐藏层的层数。
-
已知权重和偏差输入(-1,1)
![![[ai/attachment/Pasted image 20260327202834.png]]](https://i-blog.csdnimg.cn/direct/3088a8ac9661494fb0132ac2327cef0f.png)
-
已知权重和偏差输入(0,0)
![![[ai/attachment/Pasted image 20260327202844.png]]](https://i-blog.csdnimg.cn/direct/a1afcbcb349743c8b7162e0f49c74b09.png)
对于不同的参数(w,bw,bw,b)就会构成不同的函数,所有可能的函数结合起来就是一个函数集。
因为随着隐藏层数越多,错误率就会越低,但是计算量也会增大,通常都是超过亿万级别的计算。对于这样复杂的结构,我们不再采用循环的方式,而是引入矩阵计算(Matrix Operation),可以提高运算速度和运算效率。
矩阵计算
- 一层:
![![[ai/attachment/Pasted image 20260327205550.png]]](https://i-blog.csdnimg.cn/direct/8734bcc4ef934d06871ce5bc84eff8cb.png)
计算方法:σ\sigmaσ(权重w【黄色】*输入【蓝色】+偏移量b【绿色】)=输出
- 很多层:
![![[ai/attachment/Pasted image 20260327205825.png]]](https://i-blog.csdnimg.cn/direct/27c32ff289d6421e9f218448bdb422f1.png)
计算方法:(嵌套)![![[ai/attachment/Pasted image 20260327210003.png]]](https://i-blog.csdnimg.cn/direct/e0aeb90f9e8e410991e2bb4dba63a81e.png)
写成矩阵运算的好处是可以使用GPU加速。
整个神经网络可以这样看:
本质:通过隐藏层进行特征转换
把隐藏层通过特征提取来替换原来的特征工程,这样在最后一个隐藏层输出的就是一组新的特征。对于输出层,会将前面隐藏层的输出当作输入,然后通过一个多分类器得到最后的输出y。![![[ai/attachment/Pasted image 20260327221534.png]]](https://i-blog.csdnimg.cn/direct/e0820066e9a3480e9306c40a79af4e71.png)
对于隐藏层多少层合适?每层多少神经元合适?
- 这个问需要我们用尝试加上直觉的方法来进行调试。对于机器学习相关问题,我么们一般用特征工程来提取,但是对于深度学习,我们只需要设计神经网络模型来进行就可以。对于语音识别、图像识别,深度学习是个好办法,因为特征工程提取特征并不容易。
结构可以自动确定吗? - 有很多设计方法可以让机器自动找到神经网络的结构,比如进化人工神经网络(Evolutionary Artificial Neural Networks),但这些方法并不是很普及。
Step2:模型评估
损失函数
![![[ai/attachment/Pasted image 20260327222307.png]]](https://i-blog.csdnimg.cn/direct/d8518f04da744358b897e566b7128480.png)
对于一般模型,我们使用损失函数来反应模型的好坏,所以对于神经网络来说我们使用交叉熵(cross entropy)函数来对预测值和真实值的损失进行计算。接下来要做的就是调整参数,让交叉熵越小越好。
总体损失
![![[ai/attachment/Pasted image 20260327222635.png]]](https://i-blog.csdnimg.cn/direct/145a4b7f05354e10860919330459dae7.png)
总体损失:整体所有训练数据的损失的和。
在函数集中找到一组函数能最小化总体损失L,或者找到一组神经网络的参数θ\thetaθ ,最小化总体损失。
Step3:选择最优函数
找到最有函数和最好的一组参数:梯度下降![![[ai/attachment/Pasted image 20260327223033.png]]](https://i-blog.csdnimg.cn/direct/9ff780ea33084c7cb6efda6bd0144023.png)
![![[ai/attachment/Pasted image 20260327223042.png]]](https://i-blog.csdnimg.cn/direct/6b8b3b607de74839a2efe7fad4b087d8.png)
反向传播
![![[ai/attachment/Pasted image 20260327223214.png]]](https://i-blog.csdnimg.cn/direct/c1bb4c23bcfe4e2ebeaa57cee5697980.png)
在神经网络中计算损失最好的方法就是反向传播,可以用很多框架来计算损失,比如:TensorFlow,theano,Pytorch等等。
思考
隐藏层数是不是越多越好?![![[ai/attachment/Pasted image 20260327223356.png]]](https://i-blog.csdnimg.cn/direct/cf5283c3491a45fa8df2d531331775c5.png)
从数据,隐藏层确实是越多越好。
普遍性定理
![![[ai/attachment/Pasted image 20260327223809.png]]](https://i-blog.csdnimg.cn/direct/30b5132c43d645f4b569cf92a6351bed.png)
对于任何连续函数,都可以用一个仅含一层隐藏层的网络来表示(前提是给定足够数量的神经元)。
哪为什么我们还要用“深度学习”呢?直接用一个只有一层隐藏层的网络表示不就可以了?下节讲。
最近的事都会顺利吗?笔者乱写ing
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)