CMU10414-Fall2022课程笔记

本文最后更新于 2025年6月25日 晚上

课程笔记

softmax

  • 监督学习/无监督学习
  • 假设函数/损失函数/优化方法
  • 有些err函数是不可微分的,所以用softmax(激活函数,引入非线性层)->交叉熵(-log)作为损失函数
  • 转换为优化问题,使用梯度下降/随机梯度下降

mm为样本数,nn为特征数,kk为分类数

h(x)h(x)为假设函数,hy(x)h_y(x)为在label=ylabel=y上的分量

softmax为:

zi=ehi(x)/k=1nehk(x)z_i = e^{h_i(x)}/ \sum_{k=1}^n e^{h_k(x)} \\

softmax存在数值爆炸问题,可以对hk(x)max(h(x))h_k(x)-max(h(x)),映射范围为0~1,每个分量和为1

softmax_loss为:

l(h,y)=log(ehy(x)/k=1nehk(x))=hy(x)+log(k=1nehk(x))\begin{align*} l(h, y) &= -log(e^{h_y(x)} / \sum_{k=1}^n e^{h_k(x)}) \\ &= -h_y(x) + log(\sum_{k=1}^n e^{h_k(x)}) \end{align*}

hi(x)h_i(x)求偏导:

l(h,y)hi=1{i=y}+zi\frac{\partial l(h,y)}{\partial h_i}=-1\{i=y\}+z_i

如果h(x)=ΘTxh(x)=\Theta^T \cdot xΘRn×k\Theta \in R^{n\times k},则偏导为:

l(h,y)θi,j=(1{i=y}+zi)xi,j\frac{\partial l(h,y)}{\partial \theta_{i,j}} =(-1\{i=y\}+z_i)\cdot x_{i,j}

批量梯度下降,选择BB个样本然后算出梯度平均,然后对参数立即更新

neural networks

  • 引入非线性层
  • 有几个W(权重)就是几层网络

  • 对于一个两层网络的梯度推导:

  • 对于多层:

通过GL+1G_{L+1}反向传播计算到GiG_i,从而可以算出梯度(需要保留前向传播算出的ZiZ_i

automatic differentiation

  • forward mode AD

这种方法一次只能计算出v7x1\frac{\partial v_7}{\partial x_1},对于v7x2\frac{\partial v_7}{\partial x_2}还要再传播一次

  • reserve mode AD

使用反向的方法可以一次推导出所需要的所有偏导数

  • reserve mode AD by extending computational graph

vi>j=vivivj\overline{v_{i->j}}=\overline{v_i}\frac{\partial v_i}{\partial v_j}

使用扩展计算图,可以方便计算梯度的梯度

fully connected networks

  • matrix broadcasting(does not copy any data)

CMU10414-Fall2022课程笔记
https://gentlecold.top/20250619/cmu10414-note/
作者
GentleCold
发布于
2025年6月19日
许可协议