一期6.文本摘要(PDF版)

day 23

文本摘要介绍

本摘要介绍_第1页

本摘要介绍_第2页

文本摘要项目数据集

本摘要项数据集_第1页

本摘要项数据集_第2页

本摘要项数据集_第3页

本摘要项数据集_第4页

本摘要项数据集_第5页

textrank算法介绍

TextRank算法介绍_第1页

TextRank算法介绍_第2页

TextRank算法介绍_第3页

TextRank算法介绍_第4页

TextRank算法介绍_第5页

TextRank算法介绍_第6页

TextRank算法介绍_第7页

基于TextRank实现模型

基于TextRank实现模型_第1页

基于TextRank实现模型_第2页

基于TextRank实现模型_第3页

基于TextRank实现模型_第4页

基于TextRank实现模型_第5页

基于TextRank实现模型_第6页

基于TextRank实现模型_第7页

基于TextRank实现模型_第8页

基于TextRank实现模型_第9页

基于TextRank实现模型_第10页

基于TextRank实现模型_第11页

基于TextRank实现模型_第12页

基于TextRank实现模型_第13页

Day23问题点

  • 问题1: 项目中会提供一些更接近原始的数据.
    • 工业界的一线生产数据: 最大的特点就是"噪声多"!!!
    • 这数据清洗是不是把语音的全闪了 (咖啡猫🐱)
      • 情况1: 我们拿到的原始数据, 里面的语音只是文本格式的[语音], 文本格式的[图片], 本质上我们就没法拿到对应的信息.
      • 情况2: 我们拿到的原始数据, 里面的[语音]是一段真实语音, [图片]是真图片, 就复杂了!!!
        • 2.1: 需要直接动用ASR技术, 把语音信息翻译成文本.
        • 2.2: 需要利用CV, CNN卷积技术, 把图片翻译成"张量", 后续这个image的张量和文本embedding后的张量直接concat就行了.
  • 问题2: 基于计数的模型 PK 基于训练的模型, 有什么本质区别?
    • ⭕️TFIDF算法: 第一个作业!!!
      • TF算法: Term Frequency --- 词频算法
        • 核心: 统计一个单词在文档中的出现频次(次数), 单词出现越多, 重要性越大!!!
      • IDF算法: Inverse Document Frequency --- 逆文档频率算法
        • 栗子🌰: 你, 我, 他, 的, 啊, 怎么办??? --- 有些单词出现的次数确实多, 但是是很普通的词, 停用词.
        • 核心: 在更广泛的文档集合中, 10000篇文章中出现次数都很多的词 == 常见词 (恰恰不更要)
          • 出现的越普遍, 单词越不重要.
      • TFIDF = TF * IDF
        • 总结: 又要出现的多,又不能是常见词
    • TextRank: 也是基于计数的模型.
    • ⭕️基于训练的模型(BERT, GPT, T5, macBERT)有什么本质的区别???
      • 这些模型的参数是训练出来的!!! --- 大量的反向传播 + 梯度计算 + 参数更新
      • 对比TFIDF (TextRank) --- 这些模型的参数是"数数出来的" --- 不需要学习!!!
  • 问题3: 做AI项目的基线思路?
    • 无论如何, 只要是一个AI项目, 我们一定要尽快的提供一个baseline模型 + baseline基准.
    • 分类任务:
      • FastText
      • BERT (macBERT)
    • 文本摘要任务:
      • TextRank

day24

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

seq2seq架构实现本摘要

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

利预训练词向量对baseline1模型优化

Day24问题点

  • 问题1: 编码器向解码器就是要多次输送张量吗? (李辉)
    • 为啥不一次性全部给呢,反正解码器有look-ahead-mask?
    • 在Transformer架构中, 我们也是每一个时间步都把Encoder Hidden States最后一层的输出张量输送给Decoder!!!
      • 在不是GPT的情况下, 有Encoder的情况下.
  • 问题2: 一个总体的模型思路是什么?
    • 1: 首先数据集清洗
    • 2: 搞定词向量
      • 2.1: 自己写代码构造vocab, 然后依靠nn.Embedding()产生词向量
      • 2.2: 直接引用预训练模型BERT, GPT, macBERT
      • 2.3: 利用Word2Vec自己训练出一版词向量, 然后在模型中用
        • 百度阿里腾讯字节 --- 互联网大厂, 都有自己的词向量 (都有自己的大模型)
        • 垂直行业的AI公司 --- 非常讲究自己训练独特的词向量
          • 医疗
          • 金融
          • 法律
          • 新闻
    • 3: 构造数据迭代器
      • 重要的一项工作1: 就是按照模型的需求, 对数据进行一些特殊的处理!!!
        • 3.1: 第一个项目, 为了适配BERT, 原始数据 [CLS], 构造mask
        • 3.2: 第二个项目, 会为训练语料添加 < SEP >, 追加其他的辅助数据
      • 重要的一项工作2: 完成文本到数字化id的映射的工作
    • 4: 构造模型 class Model()
    • 5: 训练的代码 + 测试的代码
  • 问题3: 大厂练的词向量 一般都是用word2vec吗 还有别的吗? (阿诺)
    • 如果计划训练一版静态词向量: 类Word2Vec
    • 如果计划训练一版动态词向量: 类BERT
    • 不同公司的词向量区别大吗, 感觉都是给一堆文本, 算词频排序, 区别是喂的那堆文本不同? (Will sezna)
      • 区别还是挺大的:
        • 词派: 百度, 阿里
        • 字派: 字节, 快手, 华为
      • 词频的设置也不同
      • 词汇表的大小也不同
      • 词嵌入维度也不同
      • ⭕️原理上几乎都一样!!!
  • 问题4: embedding用專門的embedding模型效果會比用gpt那些toekenizer生成的效果好嗎? 如果是要用於embedding相似度比較?
    • 大多数情况下, 直接用类似BGE (M3 Embedding)模型效果更好.
  • 问题5: 老师 指点一些方向性的建议呀 第一个项目的蒸馏 建不建议用多教师下的蒸馏模式 采用基于置信度的加权平均,加权平均或投票机制等计算软标签 但是试了一下感觉没有单教师蒸馏的方法效果好 是不是我自己写的有问题? 还看到微软用了强化学习下的多教师蒸馏模式,听说效果好, 但是不了解强化学习复现不了 (阿诺)
    • 知识蒸馏: multi-teacher 的蒸馏难度大, 属于"调参侠"的高级阶段.....
    • 强化学习: 自从2022.11 ChatGPT之后已经成为大模型阶段的神器, 肯定效果好.
      • 讲少了很难懂, 讲多了容易懵😳
      • DQN: 2016-2017年当年玩的模型, 也是DeepMind下围棋的背后模型.
      • ChatGPT: PPO
      • 2024: DPO
  • 问题6: 数据预处理结束后, 有什么结论???
    • 暂缓写模型 + 训练......
    • 回头看看数据端能不能有什么改善? 或者新的数据处理方法?
    • ⭕️AI原则: 绝大多数情况下(99%), 人类很难读懂或者处理的文本, 模型也难以处理!!!
      • 大模型判断 9.11 > 9.9 的问题.
      • 数据决定了模型的上限
  • 小作业:
    • 总结:1.回去复习GRNN 2.回去复习vord2vector
    • 2: 所有的数据处理流程跑完
    • 3: gensim词向量训练完毕

day25

PGN模型架构

PGN模型架构

PGN模型架构

PGN模型架构

PGN模型架构

PGN模型架构

PGN模型架构

PGN模型架构

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN数据预处理

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

PGN模型的实现

day25课堂问题

  • 问题1: 关于GPU和CPU的对比?
    • CPU + GPU: 都有一级缓存, 二级缓存的概念.
    • GPU: 16GB (40GB, 80GB, 180GB) 显存 --- 是不是GPU内部运行最快, 存取效率最高的部分?
      • 本质上缓存最快!!!
      • 3090, 4090, A100 --- 显存存取效率 --- 100GB ~ 500GB / s
        • 一级缓存: 2TB ~ 3TB / s
        • 二级缓存: 9TB ~ 12TB / s
  • 问题2: 注意力的算法不是说好 softmax(Q * KT / dk)* V吗? 现在怎么又是tanh, 又是相加, 是不是用这个注意力算法, 得出的结果更加准确? (何方)
    • 因为这个我们没有用transformer架构, 也没有用预训练模型, 所以自由度很高.
    • 这里是故意给同学们展示一下注意力机制有很多.
      • 即使在咱们这里, 也完全可以继续用经典的transformer注意力计算规则!!!
    • 宏观上依然是经典注意力效果最好!!!
  • 问题3: transformer 不就是encoder 一次吗? 完了之后, decoder 时间步循环吗??? (苹果)
    • Encoder的输出张量是否只往Decoder里面传一次??? (小朱的问题)
    • ❌ 每一个时间步都要传一次!!!
    • 基于GRU (RNN/LSTM) 的模型:
      • 1: pred, dec_hidden = self.decoder(dec_input, context_vector)
      • 2: dec_input = dec_target[:, t].unsqueeze(1)
      • ⭕️本质上是每一个时间步t对应的token, 作为下一个时间步t + 1预测的输入token
    • 基于Transformer的模型:
      • 不同!!! ❎
      • ⭕️本质上是每一个时间步t对应的token + 从第1步到第t-1步所有的结果tokens, 作为下一个时间步t + 1预测的输入tokens
  • 问题4: 感觉这个交叉熵就是算了和标签一样, 没有考虑不同字符相同意思的表达? (王晨欢)
    • 🍊未来生成式任务看多了, 你就会发现都是傻瓜式计算!!!
    • 完全没达到考虑不同字符相同意思的这个程度!!!
    • 生成式任务的损失函数不仅仅这一种哦!!!
      • 还有好几个.......
      • 主流大模型的损失函数的计算并不是nn.CrossEntropyLoss()
        • 最大似然估计!!!⭕️
  • 问题5: 自由 : 这个任务的交叉熵的计算最后一步nn.crossEntropyloss和分类的看起来也没区别来着。为什么这个任务还多了一步取均值。分类的没有这一步。
    • 分类任务: 一个样本有一个预测结果 PK 唯一的标签🏷label对比
    • 文本摘要: 一个样本有一堆seq_len个预测结果 PK 一堆标签🏷seq_len个tokens
  • 问题6: 我问个基础问题,交叉熵跟soft(q*KT/dk) * V是独立的么?既然都是权重损失计算? (纯木)
    • 独立的!!!
    • 完全不是一回事!!!
  • 问题7: 训练的输入 VS 预测的输入?
    • 训练: dec_input = dec_target[:, t].unsqueeze(1)
      • 训练的时候解码器的dec_input输入的是"真实标签" --- 有label ✅
    • 预测: dec_input = predict_ids.unsqueeze(1)
      • 预测时候解码器的dec_input输入的是"上一步的预测结果" --- 没有label ❎
  • 作业:
    • 1: 2022 ~ 2024 面试题发给同学们一部分 (翻来覆去大概就是100道)
      • 要求节后交作业 --- 把面试题的详细回答提交上来!!! (回答面试题的过程就是对知识的一次大整理)
    • 2: 文本摘要项目:
      • 第2章的TextRank部分所有代码, 截图提交.
      • 第3章的Seq2Seq, 结果不重要(loss), 重点在于理解代码流程.
    • 3: 提前预习PGN模型 --- 只会发第4章的讲义.
      • 同学们预习为主, 不强求跑模型.......(不预习的话节后上课很难理解)
      • 一个epoch大概GPU上耗时1个小时!!!

day26课堂问题

  • 问题1: seq2seq架构模型效果为什么很差 --- 重复?
    • 从零训练的模型, 没有对其进行任何的优化.
    • 自回归模型: 最后一步预测的时候softmax --- top 1, 最大概率的那一个.
      • 教训: 自从2022大模型时代以来, 所有的模型都变成top K, 而不是仅仅取最大概率的token!!!
      • 其实从2019年开始就有很多模型开始采用top K的预测.
      • 包括不适用贪心算法的预测.
  • 问题2: 在PGN的模型架构下, 永远不可能出现3-0这个token?
    • 是的🙆🏻‍♀️✅
    • 3-0这个单词是OOV单词, 并且从来没有在source document中出现.
      • OpenAI, GPT o1, GPT 4o --- 能不能生成3-0的结果? (假设3-0也不在OpenAI的词典中)
        • 文心一言, 豆包, DeepSeek都算在内.
        • AI常识 (同学们一定要提高注意力) --- 面试中, 工作中, 常识问题最容易暴露新手
          • 常识1: 主流大模型的训练语料大概使用清洗后的 8万亿tokens ~ 13万亿tokens
            • 基本上把过去10年的互联网的所有的语料都学过了!!!
          • 常识2: BERT模型单次预测一条样本耗时多少?
            • CPU: 100ms ~ 200ms --- QPS: 5 ~ 10 (Query Per Second)
            • GPU: 10ms ~ 20ms --- QPS: 50 ~ 100
            • LR: 1 ~ 2ms
            • 阿里11.11, Flink实时流处理工具 --- QPS: 100万
      • 带来意外的惊喜???
        • 你不能想出来一个你不认识的字 (。)
      • 不可能!!! ❌
        • 大模型 (任意AI模型), 可以带来惊喜, 但是这个惊喜的token是在词表中的.
        • 如果不在词表中, 也不在原始文档中, 就不可能被生成出来!!!
  • 问题3: 神经网络真的跟物理有很大关系嘛? (❓)
    • 机器学习 --- 统计力学
    • 损失值优化 --- 最小化自由能量
    • 模型收敛 --- 热力平衡
    • KL散度 --- 自由能差
    • 高斯噪声 --- 随机热涨落
    • 随机梯度下降 --- 布朗运动
    • 强化学习 --- 控制理论
    • 音频, 图像, 视频 --- 信息处理 (卷积核 --- 噪声过滤 --- 特征过滤 (特征筛选))
    • 扩散模型 --- 郎之万动力学
  • 问题4: 关于source2ids函数.
    • 原始文本BERT: YGDHGJKPEWJHVIDI
    • Oovs = [21128, 21129, 21130]
    • Ids: [100, 200, 21128, 500, 28, 21129, 66, 99, 321, 21130]
  • 作业1: 简单的预习一下什么叫"小顶堆"?
  • 作业2: 本次课讲解的函数回去复习 + 理解, 尤其是文本数字化映射的3个函数.

day27课堂问题

  • 问题1: 小顶堆现实中最大的一个作用?
    • 一方面进行查找加速.
    • Leetcode: 10亿个参数, 希望提取TOP 100的值, 尽量减少时间复杂度?
      • 1: 排序 --- O(nlogn) --- x[:100]取出了TOP 100的值
      • 2: 小顶堆 --- O(nlog100)
      • 3: 哈希
  • 问题2: 未来同学们工作中需要对数据进行特殊处理的时候?
    • 一定要重写collate_fn() --- 个性化数据处理函数
  • 问题3: 关于论文复现的问题?
    • 核心: 论文复现其实是AI领域中的一个高阶能力!!!
      • 你自信至少也是年薪>=50w的工程师......
    • 论文中只要有一个矩阵出现 == 对应代码中的一个nn.Linear()的定义.
    • 定义的维度一般都要回到原始论文中找答案, 如果论文中没有明确说明:
      • 程序员自由发挥, 你按照自己的理解"随意定义就好".....
      • 未来大家会看到很多这样的处理.
    • 论文复现的时候, 为了让模型精简一些, 或者考虑到计算的复杂度, 有些时候可以在代码层面简约化一些.
      • 核心: 代码不一定严格按照论文公式来!!!
      • 按照小朱老师的代码, 公式变成: $ W [c_t, s_t, x] $
      • ⭕️作业1: 留给同学们一个小作业: 回去尝试严格按照论文公式来写一遍!!!
    • extension = torch.zeros((batch_size, max_oov)).float().to(self.DEVICE)
      • Extension: [16, 3] --- 假设当前批次16个样本最大的oovs列表长度为3
    • p_vocab_extended = torch.cat([p_vocab_weighted, extension], dim=1)
      • 相当于把单词分布矩阵 concat 扩展矩阵
      • p_vocab_weighted: [16, 30000] --- extention: [16, 3]
      • p_vocab_extended: [16, 30003] --- 相当于矩阵最后增加了3列, 这3列完全是留给oov单词的.
    • final_distribution = p_vocab_extended.scatter_add_(dim=1, index=x, src=attention_weighted)
      • 2-0这个OOV单词, 就有机会通过attention_weighted被加入到30001列中!!!
      • Argintina在p_vocab中有一定权重, 在attention_weighted中也有一定权重, 会被加和在一起!!!
    • target_probs = torch.gather(final_dist, 1, y_t.unsqueeze(1))
      • gather()函数就是scatter函数的逆操作!!!
  • ⭕️作业2: 深入理解PGN总共5个类的代码, 建议把训练跑起来, 然后看中间结果加深理解
    • python train.py

day28

文本摘要评估法

本摘要评估法

本摘要评估法

本摘要评估法

本摘要评估法

本摘要评估法

本摘要评估法

本摘要评估法

本摘要评估法

本摘要评估法

ROUGE算法代码实现

ROUGE算法代码实现

ROUGE算法代码实现

ROUGE算法代码实现

ROUGE算法代码实现

ROUGE算法代码实现

day28课堂问题

  • 问题1: 梯度消失和梯度爆炸哪个更难处理?
    • 梯度消失✅
    • 面试题: Transformer解决梯度消失问题的效果为什么比传统的RNN/LSTM要好?
      • RNN/LSTM: 从左向右传!!! 梯度是一步步传递的, 第100步的token一定要等待1~99的tokens处理完毕后, 梯度传过来再处理.
        • 在seq_len这个维度上传递梯度.
        • RNN: 有效训练长度30~50
        • LSTM: 有效训练长度80~100, (paper: 500)
      • Transformer: 从下往上传!!! 如果我们的模型有12层, 意味着梯度只传了12层.
        • 不在seq_len这个维度上传递梯度.
        • 在num_layer这个维度上传递梯度.
  • 问题2: rouge-L针对的是最长公共子序列问题(LCS)?
    • 最长公共子序列 (纯木回去复习)
    • 最长公共子串
    • leetcode题目建议同学们回去刷刷
  • 问题3: 为什么机器翻译的评估标准是BLEU或者rouge?
    • 翻译曾经有一个经典的标准: 信, 达, 雅 --- 严复.
    • 不能通过训练一个神经网络来评估哪个机器翻译的结果更好!!! ✅
  • 问题4: 抛硬币, 能不能通过训练一个神经网络来预测?
    • 信息论 --- 香农
    • 一件事物 = 信息 + 噪声
      • 抛硬币这件事 --- 它只能提供给神经网络的是"噪声"
    • 每次输入网络的input_x其实都是噪声, 没有信息输入, 本质上没法训练, 也没法收敛!!!
  • ⭕️第8次作业:
    • 跑通PGN模型, 训练2~3个epochs, 截图提交.
    • 完成第5章的评估代码 + 评估的结果, 截图提交.
    • 截止时间: 2024.10.16 20:00

day29

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline2模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

对baseline3模型的优化

day29课堂问题

  • 问题1: 那之前是小的, 当前时间步比较大, 按照这个逻辑, 取得是小的那个, 是不是就把当前注意力大的损失掉了? (azg)
    • 注意力主要靠谁??? --- 公式11里面的前2项负责主干的注意力, 后面的第3项负责覆盖损失, 只是一个旁支!!!
  • 问题2: 某一个单词懂了,但是一句话很多单词,每个单词都要算一下历史前后吗? (李辉)
    • 因为a就是长度为seq_len的张量, 累加和c就是计算所有token的历史attention分布值的加和.
  • 问题3: 关于PGN代码中的几个难点?
    • 关于公式10 --- 代码class Attention --- 只进行了一次attention_weights + coverage_vector
      • 原因: 公式中的累加和, 也就是for循环放在class PGN中, 等于在外层才有for循环进行累加和.
    • PGN的代码只有Attention和PGN两个类的代码需要改变!!!
  • 问题4: 老师, 那越往序列后面, 因为前面的注意力是累加的 (前面的注意力累加和会越来越大), 那到越后面的时间步的时候, 会不会出现该时间步的a总是比前面累加的小? (苹果)
    • 会的✅
    • 那取当前时间步的注意力分布张量a作为覆盖损失值loss_coverage.
    • 核心: 经过100个时间步的迭代, 其实模型已经学会了尽量分散注意力, 不过度的聚焦在某几个字上, 所以不用担心后面的只取a
  • 面试中问题: rouge指标大概多少算好?
    • 因为咱们得训练数据太差了, 所以rouge-1 = 23.89, rouge-2 = 8.14 太低了!!!
    • 正常的工业界能上线用的文本摘要, rouge-1: 60.0 ~ 90.0, rouge-2: 30.0 ~ 60.0
    • 小朱老师提问: 这个项目让你大的升级, 你准备怎么办? (不用LLM)
      • 🍊数据端的精细化处理:
        • 1: 所有的[语音], 全部采用ASR进行文本化处理!!!
        • 2: 图片, 也要处理, 利用image_to_text (看图说话) 进行二次处理.
        • 3: < SEP >随时 联系 --- 这种样本都应该delete掉
      • 数据端的处理有很多工作值得做!!!
        • 大厂, 中小厂, AI独角兽
        • AI四小龙 + AI六小虎
        • 模型组(算法组) + 数据组 + 系统组 + 开发组 + 产品组 + 安全组 + 商业化组
      • ✅第1个项目给同学们专门说过这件事
        • 1: 公司数据 --- 大厂, 业务线
        • 2: 甲方数据 --- 中小公司, 外包公司, 大厂给中石油做项目
        • 3: 爬虫数据 + 采买数据 --- AI很主流, 占比最大的一个方式
      • ⭕️同学们一定要遵守的原则: 简历中可以不写 (不建议写), 但是面试前一定要想好怎么说, 想好了就咬死!!!
  • 小作业: 回去查维特比解码的算法!!!
    • 后面第三个项目知识图谱中的模型会用到viterbi decode --- 时间复杂度很高 O(T * N * N), 但是保证找到最优解!!!

day30

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

从数据度优化模型

day30课堂问题

  • 问题1: 关于gensim工具包的一些细节?
    • 1: gensim有自动去除停用词的功能, 比如the
    • 2: gensim会自动去除单个字母, 比如i
    • 3: gensim会去除没有在训练集中的词, 比如name
  • 问题2: 关于TF-IDF模型的训练?
    • 本质上TF-IDF模型是一个计数模型, 核心操作是数数!!!
    • 没有反向传播, 没有梯度计算, 没有所谓的参数更新!!!
    • 这种计数模型训练起来超级快!!!
      • 70000行文本训练集 --- 大概训练5秒钟!!!
  • 问题3: 关于单词替换法的步骤?
    • 1: 首先需要训练好一个Word2Vec的模型.
    • 2: 其次需要训练好一个TF-IDF的模型.
    • 3: 按照一定规则进行替换即可.
      • 3.1: token必须是中文词.
      • 3.2: token不能是TF-IDF关键词.
      • 3.3: token必须在Word2Vec字典中.
    • 4: 单词替换法的目的是为了丰富样本的表达 + 扩充训练集.
  • 问题4: 关于6.3小节数据优化的目的是什么?
    • 1: 第一个目的是为了扩充数据集. (主要)
      • CV: 只有6000张图片, 不足以训练大模型 (或者一个优秀的模型)
        • 模糊化处理
        • 裁剪
        • 图片拼接
        • 颠倒
        • 下采样
      • NLP: 第一个项目中有18万条训练数据, 如果在你的某一次项目中只有3000条数据, 不足以训练模型.
        • 单词替换法
        • 回译数据法
        • 半监督学习法
        • 大模型生成法 (2023 - 2024)
      • 注意📢: 数据优化的扩充是不是可以任意扩充?
        • 一般来说, 数据的扩充不会超过原始数据的10倍以上 (一般在5倍以内, 最好1:1扩充)
    • 2: 第二个目的才是为了优化数据. (次要)
  • 问题5: 关于回译数据法?
    • ⭕️数据增强都是离线任务 --- 不怕慢, 慢慢跑!!!
    • 真正难点: 在线任务 --- 要求响应速度 (RT, QPS)
    • 🍊建议跑通代码就行了, 你选取100条训练集的样本, 练练手就行了.
      • 千万别把全量70000个样本全部翻译了, 充值的钱就花光啦!!!
    • ⭕️关键点: 回译数据法工业界普遍做法, 针对小语种进行翻译!!! 而且可以多跳翻译!!!
      • 中文 --- 韩文 --- 俄语 --- 中文
      • 一般来说最多3跳!!!
      • ✅小作业: 留给同学们完成3跳翻译 --- 有2个中间语言.
      • pip install openai
      • openai 1.45.0

day31

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

训练策略优化模型

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

硬件优化与模型部署

文本摘要项总结

本摘要项总结

本摘要项总结

本摘要项总结

day31课堂问题

  • 问题1: 关于曝光偏差问题有哪些情况?
    • 本质: 模型训练的时候 != 模型预测的时候
    • 1: Dropout --- 这个机制训练阶段有, 预测阶段没有......
    • 2: BERT的预训练任务MLM --- [MASK]机制在训练阶段有, 预测阶段没有......
    • 3: Teacher forcing --- 训练阶段有标签🏷label, 预测阶段没有......
      • 关于Scheduled sampling的使用尽量采用粗粒度, 也就是按照epochs进行划分!!!
        • 不要按照时间步来分割策略, 模型训练会很不稳定.
  • 问题2: 模型的训练中还存在一种不一致现象是什么?
    • Encoder: self.embedding = nn.Embedding(vocab_size, embed_size)
    • Decoder: self.embedding = nn.Embedding(vocab_size, embed_size)
    • 小朱老师👩🏻‍🏫的问题: 这两个词嵌入模块是不是一回事???
      • 不是❌!!!
      • 两个embedding模块没理由一模一样, 他们是两个模块.
    • 解决方法:
      • 1: embedding.from_pretrain(word2vector)可以解决吧 (李辉) --- 本质上是调用预训练模型.
      • 2: nn.Embedding()只写一遍, 另一个模块去复用它即可!!!
        • if config.weight_tying:
          • embedded = decoder_embedding(x)
  • 问题3: 理论上来说为什么encoding和decoding的矩阵内容不一样会对模型造成损害? 你的意思是两个一模一样矩阵过两次会对loss变得更小对么? (纯木)
    • 跟后半句没有关系......
    • 项目中处理的都是中文, 不是在进行机器翻译......
      • "你好", 进Encoder得到的embedding vector != 进Decoder得到的embedding vector
  • 问题4: 关于利用GPU和CPU的性能差异?
    • 分类任务:
      • GPU: 10ms左右
      • CPU: 100ms左右
    • 文本摘要任务:
      • GPU: 50ms左右
      • CPU: 150ms左右
    • GPU和CPU在训练时差距 10 ~ 1000倍
    • GPU和CPU在推理时差距 3 ~ 10倍
  • 作业:
    • 1: 第二个项目里面的每一章节代码跑通, 已经在homework08提交过的部分不用再次提交了.
    • 2: 主要针对5,6,7章节的内容, 截图提交.
    • 3: 截止时间 2024.10.23 18:00, homework09
posted @ 2025-07-28 09:07  凫弥  阅读(286)  评论(0)    收藏  举报