8.多层感知机+代码实现 [跟着沐神-动手学深度学习]

感知机

  ·给定输入x,权重w,和偏移b,感知机输出:

    image

  image

  二分类:-1或1。二分类Vs线性回归输出的是实数      二分类 Vs Softmax回归输出的是概率 (Softmax可以做多分类)

  训练感知机

    image

    这个算法算是一个梯度下降,等价于使用批量大小为1的梯度下降,并使用损失函数image

    

    例子

      imageimage

    收敛定理

      ·数据在半径r

      ·余量ρ分类两类  image对于 image

      ·感知机保证在image步后收敛

 

  XOR问题(Minsky & Papert,1969)

    感知机不能拟合XOR函数,它只能产生线性分割面

    image

    1.感知机是一个二分类模型,是最早的AI模型之一  2.它的求解算法等价于使用批量大小为1的梯度下降  3.它不能拟合XOR函数,导致第一次AI寒冬

 

多层感知机

   学习XOR

    image

    将四个类进行线性分类无法完成,采用多层感知机进行

  

  单隐藏层

    image

    单分类

     ·输入X∈Rn

        ·隐藏层W1∈Rm×n ,b1∈Rm

     ·输出层W2∈Rm,b2∈R   image  σ是按元素的激活函数

     为什么需要非线性激活函数?

      image任然是线性,σ不能是线性函数,不然就等价于单层感知机

 

  Sigmoid激活函数

    将输入投影到(0,1),是一个软的image

            image

    image

  Tanh激活函数

    将投影到(-1,1)

      image

    image

  ReLU激活函数

    ReLU:rectified Linear unit 

        image

    image

 

  多类分类

    image

    ·输入X∈Rn

        ·隐藏层W1∈Rm×n ,b1∈Rm

     ·输出层W2∈Rm×k,b2∈Rk  

      image y = softmax(o)

  多隐藏层

    image

             image

      超参数:1.隐藏层数  2.每层隐藏层的大小

    

    ·多层感知机使用隐藏层和激活函数来得到非线性模型

    ·常用激活函数Sigmoid ,Tanh ,ReLU

    ·使用Softmax来处理多类分类

    ·超参数为隐藏层数,和各个隐藏层大小

 

多层感知机从零开始

  实现一个具有单隐藏层的多层感知机,它包含256个隐藏单元

  

num_inputs, num_outputs, num_hiddens = 784, 10, 256

W1 = nn.Parameter(torch.randn(
    num_inputs, num_hiddens, requires_grad=True) * 0.01)
b1 = nn.Parameter(torch.zeros(num_hiddens, requires_grad=True))
W2 = nn.Parameter(torch.randn(
    num_hiddens, num_outputs, requires_grad=True) * 0.01)
b2 = nn.Parameter(torch.zeros(num_outputs, requires_grad=True))

params = [W1, b1, W2, b2]

 

  num_inputs=784:输入层大小,对应MNIST数据集中28×28=784像素的图像   num_outputs=10:输出层大小,对应10个数字类别(0-9) num_hiddens=256:隐藏层大小(256个神经元)

    权重和偏置参数

    第一层权重 W1:形状:784×256(输入层→隐藏层)用标准正态分布初始化后缩小100倍(防止初始值过大)requires_grad=True 表示需要计算梯度(用于反向传播)

    第一层偏置 b1:形状:256维向量(与隐藏层对应)初始化为全0  初始化为零梯度为0,参数不会更新,相当于隐藏层只有一个单元

    第二层权重 W2:形状:256×10(隐藏层→输出层) 同样缩小初始化值

    第二层偏置 b2:形状:10维向量(与输出层对应)

  实现ReLU激活函数

    image生成一个形状大小和数据类型一样但元素全为0,求一个最大值

  实现模型

    image  -1转成二维,输出:第一层的输出与第二层的权重做矩阵乘法加上偏差

  训练过程与Softmax过程一样

posted @ 2025-08-13 22:08  Clopt  阅读(96)  评论(0)    收藏  举报