欢迎光临散文网 会员登陆 & 注册

论文阅读1.1:addernet基础知识填坑

2021-04-12 21:39 作者:克莱登大学宅学博士  | 我要投稿

今天先继续基础知识填坑。。。。

1.      最小二乘法

也记录一下吧。。。我觉得有点收获,非科班出身还是坑有点大的。

这是一张拟合y = ax + b的图,怎么求的这条线的呢,我们采用的标准是平方和最小,写出误差函数E(a,b) 并求导

要想拟合的曲线尽量好,则两个导数都是0


解这个线性方程组

很容易得到a和b的解。非线性也是同理。

 

 

2. 先验概率和后验概率(已经忘光了)

先验概率是 以全事件为背景下,A事件发生的概率,P(A|Ω)

 后验概率是 以新事件B为背景下,A事件发生的概率, P(A|B)

 全事件一般是统计获得的,所以称为先验概率,没有实验前的概率

 新事件一般是实验,如试验B,此时的事件背景从全事件变成了B,该事件B可能对A的概率有影响,那么需要对A现在的概率进行一个修正,从P(A|Ω)变成 P(A|B),

 所以称 P(A|B)为后验概率,也就是试验(事件B发生)后的概率

 

3.      L1L2正则先验

结论先行L1正则就是加入拉普拉斯先验,L2正则就是加入高斯先验。

    从贝叶斯的角度来看,规则化=加入先验信息。在最大似然估计中,假设有一个数据集,并且Y是有白噪声(就是与测量得到的Y与真实的Y有均值为零的高斯分布误差),目的是用新产生的X来得到Y。

    我们考虑一个最简单的线性模型:

最简单的线性模型

其中这里的ϵ是白噪声,符合标准正态分布,即,所以在这个,模型中,真实值的概率分布也能得到了,仍然符合高斯分布,均值改变,得到


假设样本是独立的:


由最大似然估计,最好的参数就是由X得到Y的概率最大,即


第二个等式就是对第一个取对数之后的结果,这个结果中的第二项是常数,在优化过程中是可以忽略不计的,第一项的系数也可以忽略不计,并且加负号后转换成求最小值,优化目标依然成立,但这个形式就已经是最小二乘的形式了,也是我们平时所见到的RMSE损失函数。

在上面θ都是均匀分布的,现在如果我们假设θ服从拉普拉斯分布,则


由于拉普拉斯的概率密度函数是


令λ = 1/b , μ = 0,得到

同理若θ服从高斯分布,

 概率密度为


 取λ = 1/2δ^2 , μ = 0,带入直接得到


即L2正则化。可见贝叶斯先验概率和正则化是对应起来的。

另外L2先验趋向零周围, L1先验趋向零本身。最大后验概率估计可以看作是加了正则化的最大似然估计。

 

L1正则化
L2正则化


L1图中这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L函数有很多『突出的角』(二维情况下四个,多维情况下更多),J0与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。

二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此J0与L相交时使得w1或w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。L2圆的半径越小,最后求得loss最值时各参数也会变得很小。


4.      模型所需的计算力flops怎么计算

  • FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。

  • FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度,这里讲的是FLOPs

      通常我们去评价一个模型时,首先看的应该是它的精确度,当你精确度不行的时候,你和别人说我的模型预测的多么多么的快,部署的时候占的内存多么多么的小,都是白搭。但当你模型达到一定的精确度之后,就需要更进一步的评价指标来评价你模型:1)前向传播时所需的计算力,它反应了对硬件如GPU性能要求的高低;2)参数个数,它反应所占内存大小。为什么要加上这两个指标呢?因为这事关你模型算法的落地。比如你要在手机和汽车上部署深度学习模型,对模型大小和计算力就有严格要求。

这里讲一下卷积的flops,图源冷月@知乎

结论:卷积层 计算力消耗 等于上图中两个立方体 (绿色和橙色) 体积的乘积

设k为卷积核大小,c为输出通道数,则对于每一个输出的feature map的unit来说,会做k * k * c 次乘法,以及 k * k * c - 1 次加法。

举个例子:

Image大小为 5x5,卷积核大小为 3x3,那么一次3x3的卷积(求右图矩阵一个元素的值)所需运算量:(3x3)个乘法+(3x3-1)个加法 = 17。要得到右图convolved feature (3x3的大小):17x9 = 153。

所以输出feature有C×H×W个点时候,卷积层在计算 wx 时有:

k * k * c * H * W * o 次乘法          

(k * k * c - 1) * H * W * o 次加法    

另外还有偏置b的运算,输出 feature map 上的每个 Unit 做一次偏置项加法,所以有H * W * o 次加法 。

累加起来:k * k * c * H * W * o 次乘法

(k * k * c - 1) * H * W * o  + H * W * o  = k * k * c * H * W * o 次加法

所以对于带偏置项的卷积层,乘法运算和加法运算的次数相等,刚好配对。定义一次加法和乘法表示一个flop,该层的计算力消耗为k * k * c * H * W * o

刚好等于图中两个立方体(绿色和橙色)体积的乘积。全连接层的算法也是一样。

计算flops的开源库(我就直接照搬了,在引用最后一个):

先这样吧,过两天整理一下addernet,要不然老师问起来我就拉闸了。


来源于:https://zhuanlan.zhihu.com/p/89373759

            https://blog.csdn.net/weixin_39750084/article/details/83661413

            https://www.zhihu.com/question/23536142

            https://blog.csdn.net/zwqjoy/article/details/81912821

            https://zhuanlan.zhihu.com/p/137719986


论文阅读1.1:addernet基础知识填坑的评论 (共 条)

分享到微博请遵守国家法律