李宏毅机器学习 hw7 boss baseline分享

这篇具有很好参考价值的文章主要介绍了李宏毅机器学习 hw7 boss baseline分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hw7

代码

任务描述

使用bert来做问答任务
李宏毅机器学习 hw7 boss baseline分享
答案是都是可以在Document找到的,输入DocumentQuery 输出两个数字分别表示答案在Document中的开始和结束位置。
输入格式如下:
李宏毅机器学习 hw7 boss baseline分享

实验要求

李宏毅机器学习 hw7 boss baseline分享

实验过程

  1. doc stride,初始时Doc stride等于max_paragraph_len,这样会导致在测试时如果答案在边界附近就会被切割到两个不同的window中,从而导致预测错误。所以应该将doc stride调小一点,使得测试的window有所重叠。
  2. preprocessing数据前处理,之前训练的时候选取paragraph的时候总是让答案在段落的中间位置,这样会导致模型学到奇怪的东西,比如测试的时候输出的答案都比较偏向于中心位置,这样显然是不对的,因为测试的时候我们并不知道答案会落到哪里,因此在选取段落时应该随机选取,从最左边到最右边随机选取开始位置。代码如下:
start_min = max(0, answer_end_token - self.max_paragraph_len + 1)
start_max = min(answer_start_token, len(tokenized_paragraph) - self.max_paragraph_len)
start_max=max(start_min,start_max)
paragraph_start = random.randint(start_min, start_max + 1)
paragraph_end = paragraph_start + self.max_paragraph_len
  1. postprocessing数据后处理,测试的时候输出的结果可能会有问题,此时即便它概率很高也不能用,这些问题包括开始位置大于结束位置,开始位置或结束位置不在paragraph中。
  if start_index > end_index or start_index < paragraph_start or end_index > paragraph_end:
            continue

数据后处理还包括UNK的处理,有些字符Bert编码后是UNK,要将这些UNK字符还原为其原本的结果。文章来源地址https://www.toymoban.com/news/detail-460818.html

   answer = answer.replace(' ', '')
   if '[UNK]' in answer:
       print('发现 [UNK],这表明有文字无法编码, 使用原始文本')
       #print("Paragraph:", paragraph)
       #print("Paragraph:", paragraph_tokenized.tokens)
       print('--直接解码预测:', answer)
       #找到原始文本中对应的位置
       raw_start =  paragraph_tokenized.token_to_chars(origin_start)[0]
       raw_end = paragraph_tokenized.token_to_chars(origin_end)[1]
       answer = paragraph[raw_start:raw_end]
       print('--原始文本预测:',answer)
  1. 选用更强力的预训练模型。huggingface地址我采用的luhua/chinese_pretrain_mrc_macbert_larg
  2. 使用warm up学习率。
total_steps=num_epoch*len(train_loader)
warmup_steps=100
optimizer = AdamW(model.parameters(), lr=learning_rate)
scheduler = get_cosine_schedule_with_warmup(optimizer, warmup_steps, total_steps)
  1. 调小batch size因为新采用的模型太大了,大的batch size会导致内存爆炸,我的batch size设置为8,调小学习率,我的学习率设置为1e-5。
  2. 将验证集中的数据也拿来训练,增加训练的数据量。
  3. 对不同seed 或不同参数得到的模型做Ensemble。
    上述技巧记载了我一步步的调试过程,每当我采取上述的一个方法,都会对实验结果带来提升,这令我非常欣喜,这让我感到机器学习虽然有很大的未知性,不可解释性,但也是有其有规律的地方的,只要往正确的方向上走,就会对实验结果有所提升。当然了,找到正确的前进方向将一直是我研究的目标
    这是我在家最后一篇博客,这周是开学前最后一周,明天就将出发去学校了,终于赶在最后时刻将暑假三个月跑代码,写代码,调代码所得到的感悟总结下来了。
    希望开学之后我不必再自己给自己找任务来做了。

到了这里,关于李宏毅机器学习 hw7 boss baseline分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 李宏毅2022机器学习HW11解析

    准备工作 作业十一是域适应(Domain Adaptation),通过训练真实图片得到分类模型,并将其应用到涂鸦图片上进行分类,来获得更高的精准度。作业过程需要助教代码和数据集,关注本公众号,可获得代码和数据集(包括解析代码,文末有方法)。 提交地址 Kaggle: http://www.k

    2024年02月09日
    浏览(39)
  • 李宏毅2022机器学习HW10解析

    准备工作 作业十是 黑箱攻击(Blackbox Attack) ,完成作业需要助教代码和数据集,运行代码过程中保持联网可以自动下载数据集,已经有数据集的情况可关闭助教代码中的下载数据部分。关注本公众号,可获得代码和数据集(文末有方法)。 提交地址 JudgeBoi: https://ml.ee.nt

    2024年02月07日
    浏览(42)
  • 李宏毅_机器学习_作业4(详解)_HW4 Classify the speakers

    本次作业需要学习完transformer后完成! 做语者辨识任务,一共有600个语者,给了每一个语者的语音feature进行训练,然后通过test_feature进行语者辨识。(本质上还是分类任务Classification) Simple(0.60824):run sample code and know how to use transformer Medium(0.70375):know how to adjust parameters of tra

    2024年02月01日
    浏览(40)
  • 李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份

    一、慢慢分析+学习pytorch中的各个模块的参数含义、使用方法、功能: 1.encoder编码器中的nhead参数: self.encoder_layer = nn.TransformerEncoderLayer( d_model=d_model, dim_feedforward=256, nhead=2) 所以说,这个nhead的意思,就是有window窗口的大小,也就是一个b由几个a得到 2.tensor.permute改变维度的用

    2024年02月09日
    浏览(38)
  • 【李宏毅】HW12

    在这个HW中,你可以自己实现一些深度强化学习方法: 1、策略梯度Policy Gradient 2、Actor-Critic 这个HW的环境是OpenAI gym的月球着陆器。希望这个月球着陆器落在两个旗子中间。 什么是月球着陆器? “LunarLander-v2”是模拟飞行器在月球表面着陆时的情况。 这项任务是使飞机能够“

    2024年02月10日
    浏览(35)
  • 李宏毅-21-hw3:对11种食物进行分类-CNN

    一、代码慢慢阅读理解+总结内化: 1.关于torch.nn.covd2d()的参数含义、具体用法、功能: (1)参数含义: 注意,里面的“padding”参数:《both》side所以是上下左右《四》边都会加一个padding数量的0列: 证明如下: 运行结果:torch.Size([3, 4, 5, 4] (2)具体用法: 输入:x[ batch_size,

    2024年02月09日
    浏览(35)
  • 机器学习李宏毅学习笔记37

    ChatGPT简单原理介绍 Chatgpt以句子为输入,输出这个句子后面接的词汇的概率分布,给每一个可能的符号一个概率,根据这个分布进行sample,每次sample出来的词汇可能都是不一样的,所以答案每次也都不相同。把输出的词汇加在输入给gpt的句子后面,重复上面的过程,直到最后

    2024年02月16日
    浏览(37)
  • 机器学习李宏毅学习笔记39

    大模型+大资料 大模型的顿悟时刻 随数据量增加,模型可以从量变达到质变,从某一刻开始突然学会东西。 当成为大模型时,分数会从0,0突然变成100,完成“顿悟”. 横轴表示分布中产生答案的概率(信心分数),纵轴表示答案正确的概率。可以发现小模型的信心分数跟答案

    2024年02月14日
    浏览(72)
  • 机器学习李宏毅学习笔记33

    神经网络压缩(一) 类神经网络剪枝(pruning) 简化模型,用比较少的参数,但让效能差不多,这就是network compression这件事。有些情况下需要把模型用在resource constrain(资源有限)的情况下,比如说跑在智能手表上、小型无人机上等等。只有比较少的内存和计算能力,这时就

    2024年02月11日
    浏览(85)
  • 机器学习HW15元学习

    任务对象是Omniglot数据集上的few-shot classification任务,内容是利用元学习找到好的初始化参数。 The Omniglot dataset Omniglot数据集-背景集: 30个字母 -评估集: 20个字母 问题设置: 5-way 1-shot classification Training MAML on Omniglot classification task. Training / validation set:30 alphabets multiple charac

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包