深度学习三步骤

和机器学习一样,深度学习也是有三个步骤:
在这里插入图片描述

  1. Step1:神经网络(neural network)
  2. Step2:模型评估(Goodness of function)
  3. Step3:选择最优函数(Pick the best function)

Step1:神经网络

![[ai/attachment/Pasted image 20260327201833.png]]

神经网络有很多不同的连接方式→\rightarrow 不同的结构

完全连接前馈神经网络:

概念:前馈(feedforward)也称为前向。也就是输入信号进入网络后,信号流动是单向的。信号从前一层流向后一层,直到输出层,其中任意两层件没有反馈(feedback),信号不会从后一层回到前一层。
![[ai/attachment/Pasted image 20260327203507.png]]

输入层:1层
隐藏层:N层
输出层:1层
全连接:Layer1和Layer2之间两两都有连接
前馈:从前一层往后一层传播

深度学习为什么被称为深度?深度=隐藏层的层数。

  • 已知权重和偏差输入(-1,1)
    ![[ai/attachment/Pasted image 20260327202834.png]]

  • 已知权重和偏差输入(0,0)
    ![[ai/attachment/Pasted image 20260327202844.png]]

对于不同的参数(w,bw,bw,b)就会构成不同的函数,所有可能的函数结合起来就是一个函数集。
因为随着隐藏层数越多,错误率就会越低,但是计算量也会增大,通常都是超过亿万级别的计算。对于这样复杂的结构,我们不再采用循环的方式,而是引入矩阵计算(Matrix Operation),可以提高运算速度和运算效率。

矩阵计算

  • 一层:
    ![[ai/attachment/Pasted image 20260327205550.png]]

计算方法:σ\sigmaσ(权重w【黄色】*输入【蓝色】+偏移量b【绿色】)=输出

  • 很多层:
    ![[ai/attachment/Pasted image 20260327205825.png]]

计算方法:(嵌套)
![[ai/attachment/Pasted image 20260327210003.png]]

写成矩阵运算的好处是可以使用GPU加速。
整个神经网络可以这样看:

本质:通过隐藏层进行特征转换

把隐藏层通过特征提取来替换原来的特征工程,这样在最后一个隐藏层输出的就是一组新的特征。对于输出层,会将前面隐藏层的输出当作输入,然后通过一个多分类器得到最后的输出y。
![[ai/attachment/Pasted image 20260327221534.png]]

对于隐藏层多少层合适?每层多少神经元合适?

  • 这个问需要我们用尝试加上直觉的方法来进行调试。对于机器学习相关问题,我么们一般用特征工程来提取,但是对于深度学习,我们只需要设计神经网络模型来进行就可以。对于语音识别、图像识别,深度学习是个好办法,因为特征工程提取特征并不容易。
    结构可以自动确定吗?
  • 有很多设计方法可以让机器自动找到神经网络的结构,比如进化人工神经网络(Evolutionary Artificial Neural Networks),但这些方法并不是很普及。

Step2:模型评估

损失函数

![[ai/attachment/Pasted image 20260327222307.png]]

对于一般模型,我们使用损失函数来反应模型的好坏,所以对于神经网络来说我们使用交叉熵(cross entropy)函数来对预测值和真实值的损失进行计算。接下来要做的就是调整参数,让交叉熵越小越好。

总体损失

![[ai/attachment/Pasted image 20260327222635.png]]

总体损失:整体所有训练数据的损失的和。
在函数集中找到一组函数能最小化总体损失L,或者找到一组神经网络的参数θ\thetaθ ,最小化总体损失。

Step3:选择最优函数

找到最有函数和最好的一组参数:梯度下降
![[ai/attachment/Pasted image 20260327223033.png]]

![[ai/attachment/Pasted image 20260327223042.png]]

反向传播

![[ai/attachment/Pasted image 20260327223214.png]]

在神经网络中计算损失最好的方法就是反向传播,可以用很多框架来计算损失,比如:TensorFlow,theano,Pytorch等等。

思考

隐藏层数是不是越多越好?
![[ai/attachment/Pasted image 20260327223356.png]]

从数据,隐藏层确实是越多越好。

普遍性定理

![[ai/attachment/Pasted image 20260327223809.png]]

对于任何连续函数,都可以用一个仅含一层隐藏层的网络来表示(前提是给定足够数量的神经元)。
哪为什么我们还要用“深度学习”呢?直接用一个只有一层隐藏层的网络表示不就可以了?下节讲。

最近的事都会顺利吗?笔者乱写ing

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐