始理解NLP:我的第一章学习心得

从零开始理解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的发展遵循一个清晰的模式:

  1. 发现问题:当前方法的局限性
  2. 提出新的表示方法:更好地建模语言
  3. 验证效果:在各种任务上的性能提升
  4. 暴露新问题:为下一阶段发展奠定基础

关于现在的大语言模型

现在的ChatGPT、GPT-4等大语言模型,实际上是建立在这几十年NLP研究积累基础上的。特别是:

  • Transformer架构:注意力机制的突破
  • 预训练思想:从ELMo开始的两阶段训练
  • 大规模数据:从统计方法时代就开始的数据驱动思路

对学习的启发

这一章让我明白,理解任何技术都需要了解其发展历程。每个看似突然的突破,其实都有深厚的历史积淀。

接下来我会继续学习第二章的Transformer架构,期待了解现代LLM的核心技术原理。

结语

第一章为我打开了NLP世界的大门。从早期的规则方法到现在的大语言模型,每一步发展都在解决实际问题,每一个创新都有其深刻的技术洞察。

最深的感受:NLP不是一蹴而就的技术,而是人类几十年来持续探索的结果。理解这个过程,对于真正掌握现代AI技术意义重大。


这是我学习Happy-LLM教程第一章的心得记录,如果你也在学习NLP相关内容,欢迎交流讨论!

相关资源

相关推荐
机器之心19 分钟前
刚刚,苹果基础模型团队负责人庞若鸣被Meta挖走!加入超级智能团队、年薪千万美元
人工智能
G.E.N.1 小时前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag
西西弗Sisyphus1 小时前
如果让计算机理解人类语言- Word2Vec(Word to Vector,2013)
人工智能·word·word2vec
前端双越老师2 小时前
30 行代码 langChain.js 开发你的第一个 Agent
人工智能·node.js·agent
东坡肘子2 小时前
高温与奇怪的天象 | 肘子的 Swift 周报 #092
人工智能·swiftui·swift
AI大模型2 小时前
COZE实战部署(四)—— coze实战部署
程序员·llm·coze
AI大模型2 小时前
COZE实战部署(三)—— 更多实例的展示
llm·agent·coze
KaneLogger2 小时前
视频转文字,别再反复拖进度条了
前端·javascript·人工智能
度假的小鱼2 小时前
从 “人工编码“ 到 “AI 协同“:大模型如何重塑软件开发的效率与范式
人工智能