深度神经网络

线性回归(单层回归问题)

在这里插入图片描述
X c p 2 X_{cp}^2 Xcp2看作一个特征,则还是线性模型。

逻辑回归(单层二分类问题)

函数集

在这里插入图片描述
sigmoid 函数:

  1. 定义
    在这里插入图片描述
  2. 为什么是sigmoid?
    从生成模型推出;广义线性模型解释(太难了!找时间再看)

损失函数(cross entropy)

cross entropy

  1. 定义
    在这里插入图片描述
  2. 为什么是cross entropy?不用均方差loss?
  • 从概率生成模型角度
    最大化似然函数,有:
    在这里插入图片描述
  • 交叉熵损失角度 为了使得求得分布与实际分布之间的交叉熵最小(两个分布相近)

在这里插入图片描述
而服从伯努利分布(0-1分布)的两个分布间的交叉熵形式就是cross-entropy loss。分布如下:
在这里插入图片描述
带入上面交叉熵的公式就可以得到二分类条件下的cross-entropy loss。
在这里插入图片描述

  • 为啥不用square error了?
    交叉熵的损失函数只和分类正确的预测结果有关系,而MSE的损失函数还和错误的分类有关系,该分类函数除了让正确的分类尽量变大,还会让错误的分类变得平均,但实际在分类问题中这个调整是没有必要的
    如果是交叉熵,距离target越远,微分值就越大,就可以做到距离target越远,更新参数越快。而平方误差在距离target很的时候,微分值非常小,会造成移动的速度非常慢

多分类

softmax+交叉熵损失:
在这里插入图片描述

  • 分子 保证概率为正数
  • 分母 保证各类概率求和=1
    在这里插入图片描述

梯度下降(Gradient Descent)

定义

梯度:函数在某一点的梯度是这样一个向量,它的方向与取得最大方向导数的方向一致,而它的模为方向导数的最大值。
说人话! 梯度的方向是函数变化速度最快的方向

在这里插入图片描述
由泰勒公式推导:
在这里插入图片描述

  • 梯度下降可能存在的问题:
    1.陷入局部最小值(local minimum)
    2.陷入鞍点(saddle point)
    3.在偏导数很小时可能就结束了(plateau)
    在这里插入图片描述
SGD(Stochastic Gradient Descent)随机梯度下降

在线能够实时计算->一次一个样本
->梯度震荡-> mini-batch 训练

极值点、驻点、鞍点、拐点

极值点:函数从递增变换到递减,或者从递减变换到递增的点,不一定可导
驻点:函数的一阶导数为零
拐点:函数f(x)的凹凸弧分界点,不一定可导,如果可导二阶导为0
鞍点:不是局部最大/小值的驻点。函数在此点一阶导数为零,但该点是某一方向上的函数极大值点,在另一方向上是函数极小值点。

逻辑回归与线性回归差别

LR在线性回归的实数范围输出值上施加sigmoid函数将值收敛到0~1范围, 其目标函数也因此从差平方和函数变为对数损失函数, 以提供最优化所需导数(sigmoid函数是softmax函数的二元特例, 其导数均为函数值的f*(1-f)形式)。请注意, LR往往是解决二元0/1分类问题的, 只是它和线性回归耦合太紧, 不自觉也冠了个回归的名字(马甲无处不在). 若要求多元分类,就要把sigmoid换成大名鼎鼎的softmax了。逻辑回归和线性回归首先都是广义的线性回归,其次经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数,另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好。

模型选择

BP backpropagation

用来加速gradient decient, 使用链式法则
在这里插入图片描述
其后向传播过程相当于一个逆向网络
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证集作用

交叉验证 拿出validation set
k-fold validition 取 avg

训练技巧

数据预处理方法

  • 零均值 X -= np.mean(X,axis = 0)
  • 归一化(normalization)
    为啥要归一化?
    由梯度下降算法决定
  1. 使得各维度搜索速度大致相同,可以减小搜索难度(更新方向即为切线方向)。不用Adagrad的话没办法各维度学习率不同。
  2. 防止梯度爆炸。输入过大导致输出过大,梯度过大,学习率过小
  3. 复用他人的超参数。

梯度消失&梯度爆炸

  • 梯度消失:
    回传的时候sigmoid函数求导得到的值小于0.4 反向回传越穿越小直至消失
  • 梯度爆炸:
    初始的权重设得过大,一层一层往前回传的时候导致靠前的网络层梯度过大

解决方式:

权重 ω \omega ω初始化

Xavier初始化和He初始化;

选择合适的激活函数

使用ReLU代替softmax

ReLU的好处是不会稀释正值,而且可以提升训练速度
缺点:在小于0时候,仅仅输出0,是让一些神经元dying
可以使用其变种:RReLU & PReLU & ELU

批量归一化

在2015年的论文中,Sergey loffe和Christian Szegedy提出了一个批量归一化,用他来解决梯度消失和爆炸的问题:
即在每一层激活函数之前在模型中加一个操作:简单零中心化和归一化输入;
之后再通过每层的两个新参数(一个为了缩放,一个为了偏移)

复杂的优化器

Momentum优化
Nesterrov优化
AdaGrad优化
RMSProp优化
Adam优化

如何初始化

初始化一个深层神经网络时,一个比较好的初始化策略是保持每个神经元输入和输出的方差一致。

  • Xavier sigmoid 函数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • He ReLU激活函数
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值