从零基础到精通大语言模型(1)N-gram
N-gram 是一组由 N 个连续单词组成的片段。例如,在句子 “I love natural language processing” 中,2-gram 是 (“I love”, “love natural”, “natural language”, “language processing”)。
欢迎来到 “从零基础到精通大语言模型” 系列文章!
在人过30岁、思考人生价值与意义的日子里,在每个辗转难眠的深夜,我渴望通过技术分享找到内心的平静与充实。虽然以前经常分享最新的专业论文,但未免显得有些曲高和寡,于是萌生了制作一个有趣教程的初衷。希望在探索各种算法背后的奥秘的同时,能共同分享对人生的感悟!
在未来的一到两个月的时间里,我计划将分享我的技术经验和知识,从基础的自然语言处理领域开始,逐步过渡到计算机视觉,以及多模态大模型及智能体的各种技术。在每个夜深人静的时候,我将写下对某些技术的理解和思考,希望能够与大家分享我的所思所得,并共同探索技术的前沿。
我将力求用简单、易懂的语言,解释复杂的技术概念,使感兴趣的朋友们能够轻松地理解和掌握。今天是2024年的5月10号,我立一个flag,希望到2074年的5月10号我还能做各种最新最前沿的技术分享。让我们一起开始这场技术探险吧!
在自然语言处理中,N-gram 模型扮演着关键角色。它是一种简洁而强大的统计模型,能帮助我们揭示文本结构,并精准预测下一个单词。让我们通过一场精彩的语言预测之旅,一起揭开 N-gram 模型的神秘面纱吧!
一、N-gram 模型的基本概念
- 定义
-
N-gram 是一组由 N 个连续单词组成的片段。
-
例如,在句子 “I love natural language processing” 中,2-gram 是 (“I love”, “love natural”, “natural language”, “language processing”)。
- N-gram 模型
- N-gram 模型通过统计大量文本中的 N-gram 组合出现的频率,来估计一个单词序列的概率。
- 例子
-
1-gram(Unigram):一个词,“I”, “love”, “natural”。
-
2-gram(Bigram):两个连续的词,“I love”, “love natural”。
-
3-gram(Trigram):三个连续的词,“I love natural”, “love natural language”。
二、N-gram 模型的数学原理
在 N-gram 模型中,下一个词出现的概率基于前面的 N-1 个词。
- Unigram 模型
-
假设每个词是独立的:
- 其中,P(wi) 是词 wi 在整个语料库中的出现概率。
- Bigram 模型
-
下一个词的概率取决于前一个词:
- Trigram 模型
三、N-gram 模型的实际应用
现在,让我们用 Python 实现一个简单的 N-gram 模型来预测下一个词。
import re``from collections import defaultdict``from nltk.util import ngrams``from nltk import word_tokenize``import nltk`` ``nltk.download('punkt')``class NgramModel:``def __init__(self, n):` `self.n = n` `self.ngrams = defaultdict(lambda: defaultdict(int))`` ``def train(self, text):` `tokens = word_tokenize(text.lower())` `n_grams = ngrams(tokens, self.n, pad_left=True, pad_right=True, left_pad_symbol="<s>", right_pad_symbol="</s>")``for ngram in n_grams:` `prefix = ngram[:-1]` `word = ngram[-1]` `self.ngrams[prefix][word] += 1`` ``def predict(self, prefix):` `prefix = tuple(word_tokenize(prefix.lower()))``if prefix in self.ngrams:` `predictions = sorted(self.ngrams[prefix].items(), key=lambda x: x[1], reverse=True)``return predictions[0][0]``return None`` ``# 示例文本``text = """``I love natural language processing. I love learning about machine learning.``Natural language processing is fascinating.``"""`` ``# 训练模型``model = NgramModel(2)``model.train(text)`` ``# 预测下一个词``prefix = "I"``next_word = model.predict(prefix)``print(f"Given '{prefix}', the next word is '{next_word}'")
四、N-gram 模型的局限性与改进
- 局限性
-
数据稀疏性: 由于组合太多,很多 N-gram 在训练数据中可能不会出现。
-
长距离依赖: 只考虑前
N-1
个词,无法捕捉长距离依赖关系。
- 改进方法
-
平滑: 使用拉普拉斯平滑、加权平滑等技术来减少数据稀疏性。
-
更复杂的模型: 如 LSTM、Transformer 等深度学习模型。后面的系列中我会详细分析。
五、平滑技术
平滑技术可以帮助我们解决数据稀疏性的问题。以下是两种常见的平滑方法:
- 拉普拉斯平滑(Laplace Smoothing)
-
为每个 N-gram 增加一个额外的计数。
- 其中,
V
是词汇表的大小。
- 加权平滑(Good-Turing Smoothing)
- 重新估计低频 N-gram 的概率,通过未观察到的事件来平衡。
N-gram 曾在文本生成、拼写纠正等领域中有重要应用,模型虽然简单,却是自然语言处理的重要基础。再写个简单的例子,在输入法中,当用户输入 “recieve” 时,N-gram 模型可以建议正确的拼写 “receive”。
import re
from collections import defaultdict
from nltk.util import ngrams
from nltk import word_tokenize
import nltk
nltk.download('punkt')
class NgramModel:
def __init__(self, n):
self.n = n
self.ngrams = defaultdict(lambda: defaultdict(int))
def train(self, text):
tokens = word_tokenize(text.lower())
n_grams = ngrams(tokens, self.n, pad_left=True, pad_right=True, left_pad_symbol="<s>", right_pad_symbol="</s>")
for ngram in n_grams:
prefix = ngram[:-1]
word = ngram[-1]
self.ngrams[prefix][word] += 1
def predict(self, prefix):
prefix = tuple(word_tokenize(prefix.lower()))
if prefix in self.ngrams:
predictions = sorted(self.ngrams[prefix].items(), key=lambda x: x[1], reverse=True)
return predictions[0][0]
return None
# 示例文本
text = """
I love natural language processing. I love learning about machine learning.
Natural language processing is fascinating.
"""
# 训练模型
model = NgramModel(2)
model.train(text)
# 预测下一个词
prefix = "I"
next_word = model.predict(prefix)
print(f"Given '{prefix}', the next word is '{next_word}'")
一、大模型全套的学习路线
学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。
L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署
一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。
以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)