Transformer位置编码详解
不同于RNN、CNN等模型,对于Transformer模型来说,位置编码的加入是必不可少的,因为纯粹的Attention模块无法捕捉到输入的位置信息,即无法区分不同位置的Token。为此,我们大体有两种选择:
- 将位置信息融入到输入中,这构成了
绝对位置编码
的一般做法 - 调整Attention模块,使其有能力分辨不同位置的Token,这构成了相对位置编码的一般做法。
不同于RNN、CNN等模型,对于Transformer模型来说,位置编码的加入是必不可少的,因为纯粹的Attention模块无法捕捉到输入的位置信息,即无法区分不同位置的Token。为此,我们大体有两种选择:
绝对位置编码
的一般做法转载自Jake Boxer的博客。
Markdown语法的记录,方便以后使用。
在NLP模型中,输入通常是一个句子,例如"I went to New York last week"
,一句话中包含很多单词(token)。传统的做法是将这些单词以空格进行分隔,例如['i', 'went', 'to', 'New', 'York', 'last', 'week']
。然而这种做法存在很多问题,例如模型无法通过old, older, oldest
之间的关系学到smart, smarter, smartest
之间的关系。如果我们能使用将一个
token 分成多个 subtokens
,上面的问题就能很好的解决。本文将详述目前比较常用的subtokens算法——BPE(Byte-Pair
Encoding)。
Hexo-NexT主题可以通过git pull
进行平滑更新,但在之前的版本中,如果对NexT主题做了自定义修改,就会使得主题更新变得比较麻烦。目前版本可以通过数据文件将配置与主题分离,同时也可以把自定义布局、样式放到数据文件中,不用再修改主题源码,便于后续更新。
最近ChatGPT大火,写一篇介绍ChatGPT起源的文章来梳理一下自己对ChatGPT的理解。
Oh My Zsh
是一款社区驱动的命令行工具,是基于Zsh
命令行的一个扩展工具集,提供了丰富的扩展功能,如:主题配置,插件机制,内置的便捷操作等,可以给我们一种全新的命令行使用体验。下文对Oh My Zsh
的安装及配置方法进行总结,只总结最佳的实践。
Java语言虽然内置了多线程支持,启动一个新线程非常方便,但是,创建线程需要操作系统资源(线程资源,栈空间等),频繁创建和销毁大量线程需要消耗大量时间。
Hexo-Next主题基本配置和优化。 环境:NexT version 8.14.2