掌握BERT:自然语言处理 (NLP) 从初级到高级的综合指南

一篇很全面的BERT综合指南。

1. 什么是BERT?

在不断发展的自然语言处理 (NLP) 领域,一项名为 BERT 的突破性创新已经出现,改变了游戏规则。BERT 代表 Bidirectional Encoder Representations from Transformers,不仅仅是机器学习术语海洋中的另一个首字母缩略词。它代表了机器理解语言方式的转变,使它们能够理解使人类交流丰富而有意义的错综复杂的细微差别和上下文依赖关系。

2. 为什么BERT很重要?

想象一句话:“她拉小提琴的时候很漂亮。传统的语言模型会从左到右处理这个句子,有可能忽略了小提琴(“violin”)本身会影响整个句子的解释这一关键事实。然而BERT的机制能够理解关键信息,单词的上下文关系在派生意义方面起着关键作用。它抓住了双向性的本质,使其能够考虑围绕每个单词的完整上下文,从而彻底改变了语言理解的准确性和深度。

3. BERT是如何工作的?

BERT的核心是由一个强大的神经网络架构(称为 Transformers)提供支持的。这种架构采用了一种称为自我注意的机制,允许 BERT 根据其上下文(包括前后)来权衡每个单词的重要性。这种上下文感知使BERT能够生成上下文的单词嵌入,这些单词嵌入是考虑单词在句子中的含义的表示。这类似于BERT阅读和重新阅读句子以深入了解每个单词的作用。

考虑这句话:“The ‘lead’ singer will ‘lead’ the band.”传统模型可能会为“lead”这个词的歧义而苦苦挣扎。然而,BERT 毫不费力地区分第一个 “lead” 是名词,而第二个 “lead” 是动词,展示了它在消除语言结构歧义方面的实力。

4. BERT预处理逻辑

imgimage.png|550

Tokenization:将文本分成有意义的块

想象一下,您正在教 BERT 阅读一本书。你不会一次交出整本书;你会把它分成句子和段落。同样,BERT 需要将文本分解为更小的单元,称为标记。但这里有一个转折点:BERT 使用 WordPiece Token。它将单词拆分成更小的部分,例如将 “running” 转换为 “run” 和 “ning”。这有助于处理棘手的单词,并确保 BERT 不会在不熟悉的单词中迷失方向。

原文:“ChatGPT is fascinating”。
WordPiece Token: [“chat”, “##G”, “##PT”, “is”, “fascinating”, “.”]

Input Formatting:为 BERT 提供上下文

BERT 能理解上下文。我们以 BERT 可以理解的方式处理tokens。我们在句子之间添加特殊标记,如 [CLS](代表分类),[SEP](代表分离)。我们还分配了segment embeddings来告诉 BERT 哪些token属于哪个句子。

原文: “ChatGPT is fascinating.” 
Formatted Tokens: [“[CLS]”, “Chat”, “##G”, “##PT”, “is”, “fascinating”, “.”, “[SEP]”]

Masked Language Model (MLM) 目标:BERT 上下文理解

BERT 的秘诀在于它能够理解双向上下文。在训练过程中,一些单词在句子中被掩盖(替换为 [MASK]),BERT 学会从上下文中预测这些单词。这有助于 BERT 掌握单词在之前和之后如何相互关联。

原文:  “The cat is on the mat.” 
Masked Sentence: “The [MASK] is on the mat.”

使用 Hugging Face Transformer 进行分词

from transformers import BertTokenizer  
  
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')  
text = "BERT preprocessing is essential."  
tokens = tokenizer.tokenize(text)  
  
print(tokens)

5. 针对特定任务微调 BERT

imgBERT 有不同的风格,如 BERT-base、BERT-large 等。这些变体具有不同的模型大小和复杂性。选择取决于任务要求和您拥有的资源。较大的模型可能性能更好,但它们也需要更多的计算能力。我们微调 BERT 的任务称为 “下游任务”。包括情绪分析、命名实体识别等。微调涉及使用特定于任务的数据更新 BERT 的权重。有助于 BERT 专注于这些任务,且好处就是不需要从头开始。

例如简单使用 BERT 进行文本分类

from transformers import BertForSequenceClassification, BertTokenizer  
import torch  
  
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')  
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')  
  
text = "This movie was amazing!"  
inputs = tokenizer(text, return_tensors='pt')  
outputs = model(**inputs)  
predictions = torch.argmax(outputs.logits, dim=1)  
print(predictions)

6. BERT的注意力机制

imgimage.png|550

Self-Attention: BERT对关键信息的把控

想象一下,怎么快速阅读一本书并高亮最重要的那些单词。对于 BERT,这种处理方式叫做自注意力机制,它会查看句子中的每个单词,并根据它们的重要性决定应该对其他单词给予多少关注。这样,BERT 可以专注于相关单词,即使它们在句子中相距很远。

Multi-Head Attention: 多个注意力协同

BERT 不仅仅依赖于一个观点,它使用多个“头”的注意力。将这些 heads 想象成不同的专家,专注于句子的各个方面。这种多头方法帮助 BERT 捕捉单词之间的不同关系,使其理解更丰富、更准确。

可视化注意力权重

import torch  
from transformers import BertModel, BertTokenizer  
  
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')  
model = BertModel.from_pretrained('bert-base-uncased')  
  
text = "BERT's attention mechanism is fascinating."  
inputs = tokenizer(text, return_tensors='pt', padding=True, truncation=True)  
outputs = model(**inputs, output_attentions=True)  
  
attention_weights = outputs.attentions  
print(attention_weights)

7. BERT的训练过程

img

BERT从预训练开始,从大量的文本数据中学习。想象一下,向 BERT 展示数百万个句子,并让它预测缺失的单词。这个练习有助于 BERT 建立对语言模式和关系的坚实理解。在预训练期间,BERT 会得到一些单词被掩盖(隐藏)的句子。然后,它尝试根据周围的上下文预测这些掩码词。这就像填空游戏,通过猜出缺失的单词,BERT 了解单词如何相互关联,从而获得其上下文的Embedding关系。BERT不仅能理解单词;它抓住了句子的生成方向。在 NSP 目标中,BERT经过训练来预测文本对中的一个句子是否紧跟下一个句子。这有助于BERT理解句子之间的逻辑联系,使其成为理解段落和较长文本的大师。

8. BERT Embeddings

imgBERT 的强大之处在于它能够以一种在特定上下文中捕获其含义的方式表示单词。

Word Embeddings vs. Contextual Word Embeddings

Word Embeddings比较常见,但BERT通过上下文理解更进一步生成Contextual Word Embeddings。BERT不是每个单词只有一个含义,而是根据句子中的上下文为同一单词创建不同的embedding。这样,每个单词的表示都更加微妙,并受到周围内容的影响。

WordPiece Tokenization:更好处理复杂词汇

BERT 的词汇就像一个由称为子词的小块组成的拼图。它使用 WordPiece分词将单词分解为这些子词。这对于处理长而复杂的单词以及处理以前从未见过的单词特别有用。

Positional Encodings: 引导句子结构

由于 BERT 以双向方式读取单词,因此它需要知道每个单词在句子中的位置。位置编码被添加到Embedding中,以使 BERT 具有这种空间感知能力。这样,BERT 不仅知道单词的含义,还知道它们在句子中的位置。

使用 Hugging Face Transformer 提取单词嵌入

from transformers import BertTokenizer, BertModel  
import torch  
  
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')  
model = BertModel.from_pretrained('bert-base-uncased')  
  
text = "BERT embeddings are fascinating."  
inputs = tokenizer(text, return_tensors='pt', padding=True, truncation=True, add_special_tokens=True)  
outputs = model(**inputs)  
  
word_embeddings = outputs.last_hidden_state  
print(word_embeddings)

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值