欢迎来到 “从零基础到精通大语言模型” 系列文章!
在人过30岁、思考人生价值与意义的日子里,在每个辗转难眠的深夜,我渴望通过技术分享找到内心的平静与充实。虽然以前经常分享最新的专业论文,但未免显得有些曲高和寡,于是萌生了制作一个有趣教程的初衷。希望在探索各种算法背后的奥秘的同时,能共同分享对人生的感悟!

在未来的一到两个月的时间里,我计划将分享我的技术经验和知识,从基础的自然语言处理领域开始,逐步过渡到计算机视觉,以及多模态大模型及智能体的各种技术。在每个夜深人静的时候,我将写下对某些技术的理解和思考,希望能够与大家分享我的所思所得,并共同探索技术的前沿。

我将力求用简单、易懂的语言,解释复杂的技术概念,使感兴趣的朋友们能够轻松地理解和掌握。今天是2024年的5月10号,我立一个flag,希望到2074年的5月10号我还能做各种最新最前沿的技术分享。让我们一起开始这场技术探险吧!

在自然语言处理中,N-gram 模型扮演着关键角色。它是一种简洁而强大的统计模型,能帮助我们揭示文本结构,并精准预测下一个单词。让我们通过一场精彩的语言预测之旅,一起揭开 N-gram 模型的神秘面纱吧!

一、N-gram 模型的基本概念

  1. 定义
  • N-gram 是一组由 N 个连续单词组成的片段。

  • 例如,在句子 “I love natural language processing” 中,2-gram 是 (“I love”, “love natural”, “natural language”, “language processing”)。

  1. N-gram 模型
  • N-gram 模型通过统计大量文本中的 N-gram 组合出现的频率,来估计一个单词序列的概率。
  1. 例子
  • 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 个词。

  1. Unigram 模型
  • 假设每个词是独立的:

  • 其中,P(wi) 是词 wi 在整个语料库中的出现概率。
  1. Bigram 模型
  • 下一个词的概率取决于前一个词:

  1. 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 模型的局限性与改进

  1. 局限性
  • 数据稀疏性: 由于组合太多,很多 N-gram 在训练数据中可能不会出现。

  • 长距离依赖: 只考虑前 N-1 个词,无法捕捉长距离依赖关系。

  1. 改进方法
  • 平滑: 使用拉普拉斯平滑、加权平滑等技术来减少数据稀疏性。

  • 更复杂的模型: 如 LSTM、Transformer 等深度学习模型。后面的系列中我会详细分析。

五、平滑技术

平滑技术可以帮助我们解决数据稀疏性的问题。以下是两种常见的平滑方法:

  1. 拉普拉斯平滑(Laplace Smoothing)
  • 为每个 N-gram 增加一个额外的计数。

  • 其中,V 是词汇表的大小。
  1. 加权平滑(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大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

Logo

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

更多推荐