探索计算机如何通过马尔可夫链和GPT生成文本及其在现代技术中的重要性 -- 知识铺
[
](https://sschilakapati..com/?source=post_page-----106156aee152--------------------------------)
在这篇博文中,我将分享我所学到的关于文本生成的知识。当我深入人工智能和机器学习的世界时,这对我来说是一次相当大的探索之旅。我想了解计算机如何生成文本,所以我做了一些挖掘。
一路走来,我遇到了不同的方法和模型,我很高兴与您分享我的发现。我们将首先讨论称为马尔可夫链的东西,然后转向更高级的东西,例如 OpenAI 的 GPT。
让我们一起探索计算机如何创建文本以及为什么它在当今的技术世界中如此重要。
什么是马尔可夫链?
马尔可夫链是对一系列事件中从一种状态到另一种状态的转换进行建模的数学系统。
这些链以俄罗斯数学家安德烈·马尔可夫的名字命名,其特点是马尔可夫性质,该性质表明过渡到下一个状态的概率仅取决于当前状态,而不取决于导致该状态的事件顺序。
了解马尔可夫链文本生成:
在文本生成中,马尔可夫链用于根据给定的文本语料库对从一个单词(或标记)转换到另一个单词(或标记)的概率进行建模。
基本思想是构建一个字典,其中每个单词作为键,关联值是训练文本中经常跟随关键字的单词列表。
生成文本时,我们从种子词开始,查找其关联的可能下一个单词的列表,并随机选择其中一个来继续序列。
通过根据马尔可夫链中的概率迭代地选择单词,我们可以生成模仿训练数据的风格和模式的新文本。
为了更好地理解马尔可夫链,让我们看一些简单的 JavaScript 代码:
<span id="ce43" data-selectable-paragraph=""><br><span>class</span> <span>MarkovChain</span> {<br> <span>constructor</span>() {<br> <span>this</span>.<span>chain</span> = {}; <br> }<br><br> <br> <span>train</span>(<span>text</span>) {<br> <br> <span>const</span> words = text.<span>split</span>(<span>/\s+/</span>);<br> <br> <span>for</span> (<span>let</span> i = <span>0</span>; i < words.<span>length</span> - <span>1</span>; i++) {<br> <span>const</span> currentWord = words[i]; <br> <span>const</span> nextWord = words[i + <span>1</span>]; <br> <br> <span>if</span> (!<span>this</span>.<span>chain</span>[currentWord]) {<br> <br> <span>this</span>.<span>chain</span>[currentWord] = [];<br> }<br> <br> <span>this</span>.<span>chain</span>[currentWord].<span>push</span>(nextWord);<br> }<br> }<br><br> <br> <span>generate</span>(<span>seed, length = <span>20</span></span>) {<br> <span>let</span> currentWord = seed; <br> <span>let</span> generatedText = seed; <br><br> <br> <span>for</span> (<span>let</span> i = <span>0</span>; i < length; i++) {<br> <span>const</span> nextWords = <span>this</span>.<span>chain</span>[currentWord]; <br> <br> <span>if</span> (!nextWords || nextWords.<span>length</span> === <span>0</span>) {<br> <span>break</span>; <br> }<br> <br> <span>const</span> nextIndex = <span>Math</span>.<span>floor</span>(<span>Math</span>.<span>random</span>() * nextWords.<span>length</span>);<br> <span>const</span> nextWord = nextWords[nextIndex];<br> generatedText += <span>' '</span> + nextWord; <br> currentWord = nextWord; <br> }<br><br> <span>return</span> generatedText; <br> }<br>}<br><br><br><span>const</span> textData = <span>`<br> FROM off a hill whose concave womb reworded<br>A plaintful story from a sistering vale,<br>My spirits to attend this double voice accorded,<br>And down I laid to list the sad-tuned tale;<br>Ere long espied a fickle maid full pale,<br>Tearing of papers, breaking rings a-twain,<br>Storming her world with sorrow's wind and rain.<br><br>Upon her head a platted hive of straw,<br>Which fortified her visage from the sun,<br>Whereon the thought might think sometime it saw<br>The carcass of beauty spent and done:<br>Time had not scythed all that youth begun,<br>Nor youth all quit; but, spite of heaven's fell rage,<br>Some beauty peep'd through lattice of sear'd age.<br>`</span>;<br><br><br><span>const</span> markovModel = <span>new</span> <span>MarkovChain</span>();<br><br>markovModel.<span>train</span>(textData);<br><br><br><span>const</span> generatedText = markovModel.<span>generate</span>(<span>'Upon'</span>, <span>10</span>);<br><span>console</span>.<span>log</span>(generatedText); </span>
generate
方法以提供的seed
单词开头。- 然后它迭代指定的
length
,根据马尔可夫链模型生成下一个单词。 - 对于每次迭代,它都会在马尔可夫链的字典中查找
currentWord
以找到可能的下一个单词。 - 如果没有下一个单词或者
currentWord
不存在于字典中,则会跳出循环。 - 如果有下一个单词可用,它会随机选择其中一个单词附加到生成的文本中。
- 它将
currentWord
更新为新生成的单词,并继续该过程,直到达到所需的长度。
此代码创建一个马尔可夫链模型并使用一些示例文本对其进行训练。然后,它根据起始词生成新文本。这是一个基本示例,但它让您了解马尔可夫链在实践中如何工作。
转向高级模型:
现在我们已经掌握了使用马尔可夫链生成基本文本,让我们来谈谈更高级的模型,例如 OpenAI 的 GPT。
这些模型建立在复杂的神经网络架构(例如 Transformer)之上,能够捕获文本中的复杂模式和远程依赖性,并接受了来自互联网的大量文本的训练。
他们使用奇特的数学和算法不仅可以计算出接下来出现的单词,还可以计算出整个句子应该是什么!我们在人工智能领域已经取得了如此大的进步,真是令人惊讶。
结论:
文本生成是一个结合了语言学、统计学和计算机科学的迷人领域。从马尔可夫链等简单模型到 GPT 等尖端技术,我们已经看到计算机如何以极高的准确性生成文本。
随着我们不断探索和开发这些模型,人工智能驱动的文本生成的可能性是无限的。无论是聊天机器人、内容创建还是语言翻译,文本生成在塑造技术的未来方面都发挥着至关重要的作用。
我希望这篇博客能让您深入了解人工智能和机器学习这个令人兴奋的领域。感谢您加入我的旅程!
参考链接
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/gpt/post/20240325/prompt/%E6%8E%A2%E7%B4%A2%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E9%93%BE%E5%92%8CGPT%E7%94%9F%E6%88%90%E6%96%87%E6%9C%AC%E5%8F%8A%E5%85%B6%E5%9C%A8%E7%8E%B0%E4%BB%A3%E6%8A%80%E6%9C%AF%E4%B8%AD%E7%9A%84%E9%87%8D%E8%A6%81%E6%80%A7--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com