---
url: /lm/chatgpt/memory.md
description: 用一种更通俗的方法来解释ChatGPT为什么拥有记忆力。
---

# ChatGPT为什么拥有记忆力？

一位博学多识且智力超群的智者，他可以：

* 上知天文下知地理
* 琴棋书画样样精通
* 学富五车饱读诗书
* 熟读兵法百战百胜

面对这样一位无所不能的人，如果萍水相逢，生平第一见面，你问他：我叫啥？那么他可以答出来吗？我相信不管他多么彬彬有礼，内心也会产生问候你的冲动，然后让你滚犊子。但是你这时你先自报家门，来一个简短的自我介绍，我相信这位智者立马就对你审视一番，然后对你作出基本的判断。随着交流不断的深入，智者对你了解的越来越多，对你的问题也就会越来越有针对性。

那么问题来了，如果这位智者每天要接触成千上万的人，那么他真的可以记住每一个人的情况，随时都可以接着之前的话题继续聊？我想这样也太为难这位智者了。那究竟应该怎么做呢？答案就是重复。每次与智者开始畅聊之前，都重新自我介绍一番，把之前聊的问题回忆一下，然后再接着聊下面的问题。如此，智者便可以与众多人高谈阔论了。

我们想象一下，ChatGPT就是用大模型训练出来的一位智者，然后全球有超过上亿的用户在与它交流。我们在与它开始交流前都先自报家门，介绍一下交流的主题以及你的诉求，ChatGPT就可以有针对性的为你回答。此时的自报家门就是Prompt，每次交流前都把之前的交流内容再重复给ChatGPT,这就是ChatGPT具有上下文记忆的机制。

理解了这点，我们再看下一个问题，ChatGPT为什么要限制token数？我们想象一下，通常我们会有这样的感受，再与聊得来的朋友聊到有趣的话题时，我们可能没有什么感觉就好几个小时过去了，这期间就会涉及到大量的聊天内容。上面已经说过了，ChatGPT的机制就是重复，如果不限制一次聊天的长度，那么后面每聊一句话，都需要把前面所有的内容都重复一遍，这对于ChatGPT来说就要消耗更多的时间来重新理解之前的内容，就会导致后面的交流越来越迟缓，交流体验就会大大降低。能支持多少内容，就看训练的数据是支持多长的内容以及算力够不够。

通过简单的类比介绍了ChatGPT的机制，如果有理解不正确的地方，欢迎大家指正。

本文写于2023年5月18日。
