从零开始理解NLP:我的第一章学习心得
前言
最近开始学习Datawhale的Happy-LLM教程,刚完成第一章《NLP基础概念》的学习。作为一个对大语言模型感兴趣的初学者,这一章给了我很多启发。想记录一下自己的学习收获和思考。
重新认识NLP:不只是"让机器懂人话"
学习之前,我对NLP的理解很简单------就是让计算机理解人类语言。但学完第一章后,我发现这个定义太粗浅了。
教材中提到,NLP是"一种让计算机理解、解释和生成人类语言的技术",它结合了计算机科学、人工智能、语言学和心理学等多个学科。这让我意识到,NLP其实是一个高度跨学科的领域。
最大的收获:NLP不仅要让机器"懂"语言,更要让它能执行各种复杂的语言处理任务,如中文分词、词性标注、文本分类、实体识别等。每个任务都有其特定挑战。
发展历程:一条清晰的技术演进路线
早期探索(1940-1960年代):从图灵测试说起
读到1950年图灵测试的部分时,我印象特别深刻:
"如果一台机器可以通过使用打字机成为对话的一部分,并且能够完全模仿人类,没有明显的差异,那么机器可以被认为是能够思考的。"
这个测试至今仍然是衡量AI的重要标准,可见图灵的前瞻性。但早期的机器翻译系统主要依赖字典查找和基本词序规则,效果很有限。
符号主义与统计方法(1970-1990年代):两大阵营的分化
这个时期最有趣的是研究者分成了两大阵营:
- 符号主义:关注形式语言和生成语法
- 统计方法:关注统计和概率方法
1980年代是个转折点,统计模型开始取代"手写"规则。这让我想到,很多技术进步都是从复杂的手工规则向自动学习的方向演进。
机器学习与深度学习(2000年代至今):质的飞跃
几个关键时间节点让我印象深刻:
- 2013年:Word2Vec开创词向量新时代
- 2018年:BERT引领预训练语言模型浪潮
- 近年来:GPT-3等Transformer模型能生成接近人类水平的文本
这条发展脉络很清晰,每一步都在解决前一阶段的关键问题。
NLP任务:从基础到应用的完整体系
学习各种NLP任务时,我发现它们之间有很强的层次性和关联性。
基础处理任务
中文分词给我的冲击最大。英文天然有空格分隔,而中文需要算法来判断词汇边界:
英文:The cat sits on the mat.
切割:[The | cat | sits | on | the | mat]
中文:今天天气真好,适合出去游玩.
切割:["今天", "天气", "真", "好", ",", "适合", "出去", "游玩", "。"]
教材中的错误分词例子更让我理解了这个任务的难度:
输入:雍和宫的荷花开的很好。
正确:雍和宫 | 的 | 荷花 | 开 | 的 | 很 | 好 | 。
错误:雍 | 和 | 宫的 | 荷花 | 开的 | 很好 | 。(地名被拆散)
子词切分的概念也很有启发性。比如"unhappiness"可以分解为"un"+"happi"+"ness",让模型即使没见过完整单词,也能通过子词理解其含义。
理解与分析任务
实体识别的例子很直观:
输入:李雷和韩梅梅是北京市海淀区的居民,他们计划在2024年4月7日去上海旅行。
输出:[("李雷", "人名"), ("韩梅梅", "人名"), ("北京市海淀区", "地名"), ("2024年4月7日", "日期"), ("上海", "地名")]
关系抽取更进一步,不仅识别实体,还要找出实体间的关系:
输入:比尔·盖茨是微软公司的创始人。
输出:[("比尔·盖茨", "创始人", "微软公司")]
生成任务
文本摘要分为抽取式和生成式两种,这个区分很重要:
- 抽取式:直接从原文选取关键句子
- 生成式:重新组织和改写内容
后者显然更有挑战性,需要理解文本深层含义。
文本表示发展:从稀疏到密集的革命
向量空间模型的问题
教材中的数据让我震惊:
python
# "雍和宫的荷花很美"
# 词汇表大小:16384,句子包含词汇:5个词
vector = [0, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ...]
# 稀疏率:(16384-5)/16384 ≈ 99.97%
99.97%的稀疏率!这意味着巨大的存储浪费和计算低效。
Word2Vec的突破
2013年Mikolov等人提出的Word2Vec真正解决了这个问题,提供了:
- 低维密集表示:从高维稀疏到低维密集
- 语义关系捕捉:相似词在向量空间中距离更近
- 良好的泛化能力:基于上下文学习,不依赖词典
两种架构的区别:
- CBOW:根据上下文预测目标词,适用于小型数据集
- Skip-Gram:根据目标词预测上下文,在大型语料中表现更好
ELMo的创新:从静态到动态
ELMo实现了"一词多义"的重大突破,同一个词在不同上下文中会有不同表示。这比Word2Vec的固定表示更符合语言的实际使用情况。
关键创新:
- 引入预训练思想
- 使用双向LSTM捕捉上下文
- 两阶段过程:预训练+任务微调
个人思考与收获
关于技术演进规律
学完这一章,我发现NLP的发展遵循一个清晰的模式:
- 发现问题:当前方法的局限性
- 提出新的表示方法:更好地建模语言
- 验证效果:在各种任务上的性能提升
- 暴露新问题:为下一阶段发展奠定基础
关于现在的大语言模型
现在的ChatGPT、GPT-4等大语言模型,实际上是建立在这几十年NLP研究积累基础上的。特别是:
- Transformer架构:注意力机制的突破
- 预训练思想:从ELMo开始的两阶段训练
- 大规模数据:从统计方法时代就开始的数据驱动思路
对学习的启发
这一章让我明白,理解任何技术都需要了解其发展历程。每个看似突然的突破,其实都有深厚的历史积淀。
接下来我会继续学习第二章的Transformer架构,期待了解现代LLM的核心技术原理。
结语
第一章为我打开了NLP世界的大门。从早期的规则方法到现在的大语言模型,每一步发展都在解决实际问题,每一个创新都有其深刻的技术洞察。
最深的感受:NLP不是一蹴而就的技术,而是人类几十年来持续探索的结果。理解这个过程,对于真正掌握现代AI技术意义重大。
这是我学习Happy-LLM教程第一章的心得记录,如果你也在学习NLP相关内容,欢迎交流讨论!
相关资源: