Py学习  »  机器学习算法

DeepMind发文详解Transformer机器学习架构,可帮助行业人士从零构建算法模型

DeepTech深科技 • 1 年前 • 188 次点击  


机器学习架构 Transformer 自 2017 年被谷歌推出后,在自然语言处理(NLP,Natural Language Processing)和计算机视觉领域得到广泛应用且获得巨大成功,一定程度上对此前的递归神经网络(RNN,Recurrent Neural Network)形成了替代。

5 年以来,行业人士针对 Transformer 开发出了众多变体,但人们对其描述通常都是图形化或口头形式的。尽管它们很受欢迎,但几乎没有人为任何变体发布过伪代码。

在计算机科学中,伪代码是对算法或其他系统如何实现的重点描述,用于人类阅读而不是机器阅读,比传统的编程语言代码更易理解,类似于自然语言,可读性好。

伪代码的语法没有具体标准,因为它并不是用于可执行程序。伪代码的主要意义在于使算法被各种编程语言更容易地表示。

不过,不知什么原因,深度学习领域的从业者好像并不想为自己的模型写伪代码。

近日,与谷歌同为 Alphabet 子公司的 DeepMind,将 Transformer 架构进行了详细解读,并将相关论文以《Transformers 架构的形式化算法》(Formal Algorithms for Transformers)为题提交在 arXiv 上。

据了解,Transformer 非常擅长 NLP 或建模序列数据,常用于的两种任务类型是序列建模和序列到序列的预测。许多预训练模型,如 GPT-2、GPT-3、BERT、 XLNet 和 RoBERTa,证明了 Transformer 执行各种 NLP 相关任务的能力,并可应用于机器翻译、文档生成、生物序列分析、视频理解等方面。

本次的研究论文旨在成为 Transformer 独立的、数学上精确的算法概述,并对 Transformer 的定义、训练方法、用途和关键架构组件、较有名的模型做了说明。

论文开篇有一段引言,DeepMind 写道:“曾有同事给一位著名的复杂性理论家寄过一篇非常好的论文。但理论家却表示,在论文中找不到一个定理,不知道这篇论文是关于什么的。”


(来源:DeepMind


该公司提到,这个真实故事很好地表达了他们在浏览许多深度学习论文时的感觉:无法准确地找出算法建议。


在过去的几年里,深度学习取得了极大进步,每年发表的关于该方面的论文可达数千篇。

但这些论文往往缺乏科学的精确性和细节,其中很多只是介绍了他们的模型相较之前有何变化,甚至有的论文只包含几行散文式的描述,最多有一些图表,而没有对模型的精确解释,完全没有伪代码。

也有人会说,大多数深度学习模型都是一些核心架构的微小变化,因此,一个增加了对变化的描述的参考应该就足够了。

但模型的核心算法应该附带调用它们的包装器算法,例如(前)训练、微调、提示、推理、部署。对于行业人士,这些论文也许已经十分精简,但理论家一般要更细致的介绍说明。

无论如何,如果这些事情没有被较好地说明,算法模型仍然很难被人所理解。

正确地解释这些模型是如何被训练和使用的也同样重要,因为有时甚至不清楚所描述的模型的输入和输出是什么。当然,有经验的人通常能够正确地猜测,但这显然不是一个能够科学应用的方法。

值得一提的是,开放源代码很有效,但这并不能很好地替代伪代码的作用。在基本将算法完整描述的情况下,源代码往往要几千行,而一个包含所有重要内容的伪代码通常还不到一个页面。但很少有深度学习从业者能在设计算法的同时写出伪代码。

有人也对伪代码的必要性提出疑问,它有什么用处,真的有人需要伪代码吗?

在深度学习中,提供伪代码可以用于许多用途。相比动辄上千行的实际代码,伪代码能让研究者更简单地开发新模型。


研究人员在论文中提到:“伪代码能够对需要完整和精确公式的理论研究者、从零实现 Transformer 的实验者和使用形式 Transformer 算法扩充论文或书籍的人提供非常大的帮助。”

理论家需要紧凑、完整和精确的描述来进行推理,并最终证明算法的性质。他们通常不愿意或无法对实际代码进行反向工程,或去猜测单词、图表的具体含义。

综上所述DeepMind 的研究人员因此正式描述了 Transformer 架构、典型任务、标记化(文本的表示方式)、训练和推理的所有方面。

在论文中,DeepMind 还表示,当在消化了论文中的内容后,人们可进一步地更深刻理解 Transformer,并在此基础上,能够为有关 Transformer 领域的文献做出贡献,且能基于伪代码从零创建 Transformer 模型。



参考资料:
https://arxiv.org/abs/2207.09238



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138044
 
188 次点击