LayerNormalization
今天和同学讨论transformer源码的时候发现了自己竟然说不出来layer normalization是怎么做的,继续深究的时候发现了一个更神奇的地方,就是自己实现的layernormalization和pytorch官方的怎么都不一样,最后发现是因为求方差时选择样本方差还是总体方差的问题,因此写篇博客记录下该问题 给定一个维度是(batch_size, seq_len, hidden...
今天和同学讨论transformer源码的时候发现了自己竟然说不出来layer normalization是怎么做的,继续深究的时候发现了一个更神奇的地方,就是自己实现的layernormalization和pytorch官方的怎么都不一样,最后发现是因为求方差时选择样本方差还是总体方差的问题,因此写篇博客记录下该问题 给定一个维度是(batch_size, seq_len, hidden...
Adam是一种梯度下降的算法,综合考虑了梯度的一阶矩、二阶矩,计算更新步长。 直接上伪代码: 更新规则 计算出梯度 $ g_{t} $ 首先,计算梯度的指数移动平均数 $ m_{t} $ $ m_{t} = \beta_{1}m_{t-1} + (1 - \beta_{1}g_{t})$ 其中$m_{0}$初始化为0, $\beta_{1} $为指数衰减率,控制权重分配,通常取0....
最近阅读文章看到一篇可解释性的相关的,往上追溯到了积分梯度算法(Integrated Gradients),蛮有意思,写篇博客整理一下思路 参考论文:Axiomatic Attribution for Deep Networks https://arxiv.org/abs/1703.01365 motivation 这篇文章研究的是如何将模型的预测归因到模型的输入上,以对模型进行debug、...
旋转位置编码,来源于文章(ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING),是一种通过构造特定的绝对位置编码使得相对位置信息能够介入到attention中去的一种技术 RoPE在LLAMA、PaLM等模型中得到了应用。 不过笔者在对比中发现,META Github仓库中的RoPE实现、Huggingface LLAM...
首先介绍下类的功能层次和类的实现层次: 类的功能层次是指,对类进行继承后进行的功能拓展,例如Car(车类),所有车都有启动和停止方法以及转弯等方法,但是现在我有一个特殊的车需要在Car车类的基础上加一个倒车影像功能,此时只需要继承Car类再自己的类中加一个倒车影像的方法即可。 类的实现层次是指,对类只进行继承和方法实现,而不新增方法。比如不同的车都有鸣笛功能,但是鸣笛方式需要不同车来实现。 ...
先讲静态代理模式,动态代理模式没太看懂….涉及到java的反射等语言特性,回头有时间再补吧 代理模式的主要角色如下。 抽象主题(Subject)类(业务接口类):通过接口或抽象类声明真实主题和代理对象实现的业务方法,服务端需要实现该方法。 真实主题(Real Subject)类(业务实现类):实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。 代理(Proxy)...
原型模式的类做了这样一个事情:该类可以创建当前对象的一个克隆,从而规避某些情况下直接创建对象代价比较大的问题。(某些情况下,通过new 去创建一个对象,需要非常繁琐的步骤,如:数据准备和检查访问权限等。使用原型模式可以简化这些操作。) 例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 在ja...
建造者模式的使用场景: 当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数时,由于构造函数的重载、参数列表的过长,会导致使用这个类进行实例化的时候容易错误传递参数值。 直接看一段代码实例: class Pizza: def __init__(self, builder): self.garlic = builder.garlic sel...
talk is cheap, show me the code 首先看transformer原文中的定义: PE是一个(max_len, d_model)的Tensor,其中每个位置的值由如上公式定义,其中pos表示单词的位置,i是纬度。 代码实现上来说,先构建position,令其为torch.arange(0, max_len)的序列,然后增加维度。再构建分母部分的div_term...
本篇文章介绍使用PyTorch实现BERT中的Self-Attention,本文适用范围:阅读过transformer和bert论文,了解其架构,但是不了解其代码实现的学习者 BERT中的Self-Attention架构 BERT中的Self-Attention使用的是与Tranformer中相同的架构,在transformer论文中其示意图如下: 其公式表述为 $Attention...