感知机

最简单的单层感知机(朴素感知机)模型

感知机表示的与门,与非门,或门,逻辑电路相同,仅仅参数:权重w与偏置b不同

为什么朴素单层感知机可以表示与门,与非门,或门,而不能表示异或门?
朴素感知机只能表示由一条直线分割的空间.
异或门空间为
仅仅使用一条直线不可能完成分割

如何使用多层感知机表示异或门?

感知机通过叠加层,能进行非线性表示

神经网络

感知机与神经网络的区别
感知机 = 线性变换 + 阶跃激活。
神经网络 = 大量类似“线性变换 + 非线性激活”的单元分层组合起来。

为什么神经网络的激活函数不能使用线性函数?
对于线性函数,多层神经网络总是存在等价的单层神经网络.
因此,使用线性函数作为激活函数没有意义

sigmoid函数

sigmoid 的特性
不论在何处,sigmoid函数的导数不为0

ReLU函数

softmax函数

在分类问题中使用softmax函数

为什么在分类问题训练过程中会使用到softmax,而在推理过程中可以省略softmax
softmax运算代价比较高.softmax本身不会影响排序


机器学习中分类问题与回归问题的区别
分类问题:数据属于哪一个类别(离散)
回归问题:根据输入预测一个数值(连续)

神经网络的学习

机器学习与深度学习的区别

何为神经网络的端到端学习
从原始输入得到输出
不论是识别狗还是人脸的工作,都可以通过不断学习原始数据,尝试求解问题

损失函数

均方误差

均方误差损失函数

交叉熵误差

为什么进行神经网络学习的时候,不能将识别精度作为指标?或者说为什么我们需要损失函数?
accuracy 几乎处处不可导,而且对参数的小变化不敏感。

随机梯度下降SGD步骤

  1. minibatch,计算损失函数
  2. 计算梯度
  3. 更新权重
  4. loop1-3

误差反向传播法

计算图练习

什么是仿射变化?
线性变换再加上平移
,为矩阵,为向量,为平移向量

在回归问题中,输出层使用恒等函数,损失函数为平方误差
在分类问题中,输出层使用softmax,损失函数用交叉熵误差函数

为什么在回归问题中,输出层使用恒等函数,损失函数为平方误差?

为什么在分类问题中,输出层使用softmax,损失函数用交叉熵误差函数?
https://chatgpt.com/c/6a786196-e21c-83ee-a344-c61b1a206fc5
推导过程

学习相关技巧

参数更新

SGD

SGD的缺点是如果函数的形状非均向,搜索路径会非常低效

什么是函数形状非均向?

在x方向上变化过慢,而在y方向上变化过快
两个方向上陡峭程度差距很大

为什么SGD在非均向上低效?

x方向收敛速度过慢
y方向上不断震荡,收敛过慢

Momentum

momentum方法的思路


这一项的作用为在物体不受任何力时,逐渐减速,物理上对应摩擦力或阻力

为什么momentum方法能够克服函数形状非均向的情况?

在x方向上不断累积加速度
在y方向上,震荡的y不断抵消
实现不改变学习率的前提下,放大x方向学习率,缩小y方向学习率

AdaGrad

按参数变化情况的学习率衰减


AdaGrad会记录过去所有梯度的平方和,学习越深入,更新幅度越小

Adam

融合了Momentum与AdaGrad两种算法
参照小球滚动的物理规则与AdaGrad的为每个参数调整更新步伐

四种方法比较

权重

为什么权重初始值不能设定为0
或者更严格来说,为什么权重初始值不能设定为一样的值?
w.1==w.2,
不同神经元的参数完全相同
导致:
相同参数→相同输出→相同梯度→相同更新→永远相同
“对称性无法被打破”
多个神经元与单个神经元没有本质上的区别

梯度消失

初始权重过大,导致在学习的过程中,sigmoid输出接近0/1,sigmoid导数接近0
反向传播不断乘以小数
越靠前,梯度越小
导致权重几乎无法更新

表现力受限


解决了梯度消失的问题,但是多个神经元几乎相同的输出,多个神经元和单个神经元差别不大

Xavier初始值的方法
如果钱一层节点数为n,则初始值使用标准差为的分布
效果拔群

Batch Normalization

每一层的输出可能分布范围都有所不同
Batch Norm 的核心作用,是让每一层送给下一层的数据尺度保持在比较稳定、容易学习的范围内,从而让训练更稳定、更快。

BN = 每个 mini-batch 内,对各特征进行标准化,再进行可学习的缩放和平移

具体操作
均值:
方差:
Normalization:

overfit

发生过拟合的主要两个原因

  1. 模型拥有大量参数,表现力强
  2. 训练数据少

过拟合的本质是模型不仅训练到了数据背后的普遍规律,还把数据背后的噪声也学习了

大量参数的情况:
简单模型在参数空间中,可能只能拟合出一条比较平滑曲线
而复杂模型在参数空间中,能拟合每一个点,连训练数据中的噪声也被学习

权值衰减

L2范数方法

原来损失函数为,梯度,参数更新为
现在损失函数为,梯度

参数越大,越容易被抑制

Dropout

提出过拟合方法的背景
L2范数进行权重衰减,可以简单实现
但是在复杂网络中,表现不够好,在这种情况下,我们常常会使用Dropout方法


Dropout的具体方法
通过随机删除神经元表达实现

卷积神经网络

普通全连接层有什么问题
数据的形状被忽略了
最简单的MNIST识别问题中,输入图像具有二维平面属性,但在处理的时候被排成一列

卷积运算

填充

步幅

池化

最经典的max池化

深度学习

数据增强

迁移学习

先在一个巨大的数据集上完成学习
再将学习完的部分权重复制到其他神经网络
再对该网络进行fine tuning

量化

深度学习的高速化中,内存容量,总线带宽等也会成为瓶颈
而深度学习不那么依赖数值精度的位数,具有良好的健壮性
因而可以使用较低精度完成学习

RNN

递归神经网络(recurrent)
神经网络会受之前生成的信息影响
大模型LLM Transformer架构其实也是一种RNN