昇思MindSpore技术公开课——第三课:GPT

1、学习总结

1.1Unsupervised Language Modelling

GPT代表“生成预训练”(Generative Pre-trained Transformer)。GPT模型是由OpenAI公司开发的一种基于Transformer架构的人工智能语言模型。它在大规模文本数据上进行预训练,学习了丰富的语言知识和语境,并能够执行多种自然语言处理任务。

GPT模型的核心思想是在大规模语料库上进行预训练,使其具备对语言的理解和生成能力。它采用Transformer架构,该架构利用自注意力机制来处理输入序列,使得模型能够捕捉长距离依赖关系。GPT的预训练包括自监督学习,其中模型尝试预测给定上下文中缺失的词语,从而学习语言的结构和语法。

动机

GPT 模型的动机来源于 未标注的文本数据远多于已标注的文本数据,并且对于不同的下游任务会存在不同的标注方式。

已有方法
semi-supervised learning

半监督学习(Semi-Supervised Learning)是一种机器学习范式,介于监督学习和无监督学习之间。在半监督学习中,训练数据集包含一部分带有标签的样本(有监督的数据)和一部分没有标签的样本(无监督的数据)。该方法旨在利用有限的标签样本和大量未标签样本来提高模型的性能。GPT1主要使用以下方法训练:

  • 基于大量未标注的文本数据,训练预训练语言模型
  • 使用已标注文本数据,对模型针对某一特定下游任务进行finetune,只更改output layer(线性层)

但是半监督学习面临以下问题:

  • 自然语言处理的下游任务非常多元,难以有统一的优化目标。
  • 难以将预训练模型的信息完全传递到finetune的下游任务中。

所以提出了非监督学习预训练模型,模型结构如下:
由于训练objective的选择,gpt在模型选择上不应该看见当前token后的信息,故模型应设计为单向网络,即transformer中的decoder结构。
在这里插入图片描述

2、学习心得

Supervised Fine-Tuning

Supervised Fine-Tuning(有监督微调)是一种机器学习中的训练策略,通常用于对预训练模型进行进一步调整以适应特定任务。这方法主要应用在迁移学习的背景下,其中模型首先在一个大规模的任务上进行了预训练,然后通过微调在特定任务上进行优化。

在已经预训练好的GPT上额外加一层线性层
在这里插入图片描述
并通过缩小目标与计算结果的误差进行模型优化
在这里插入图片描述
最终为加速模型收敛及提高模型的泛化性,融入pretrain时language modelling的优化目标
在这里插入图片描述

心得:

在GPT课程的学习过程中,我对自然语言处理和大模型的工作原理有了更全面的认识。通过深入学习GPT模型,我理解了预训练和微调的重要性,以及如何利用大规模文本数据让模型学到通用的语言表示。课程中的实践项目——使用GPT Finetune 完成一个Task,使用IMDb数据集,通过finetune GPT进行情感分类任务。加深了对模型训练和调整的实际操作经验。

总的来说,GPT这一节课程的学习让我受益匪浅。不仅拓展了对人工智能和大模型的理解,还提升了在实际项目中应用这些知识的能力。这门课程为我未来在人工智能领域的发展奠定了坚实的基础,激发了我对这一领域的兴趣和探索欲望。

3、经验分享

使用GPT Finetune 完成一个Task

在模型finetune中,需要根据不同的下游任务来处理输入,主要的下游任务可分为以下四类:

  • 分类(Classification):给定一个输入文本,将其分为若干类别中的一类,如情感分类、新闻分类等;
  • 蕴含(Entailment):给定两个输入文本,判断它们之间是否存在蕴含关系(即一个文本是否可以从另一个文本中推断出来);
  • 相似度(Similarity):给定两个输入文本,计算它们之间的相似度得分;
  • 多项选择题(Multiple choice):给定一个问题和若干个答案选项,选择最佳的答案。
    在这里插入图片描述
    本次实践使用IMDb数据集,通过finetune GPT进行情感分类任务。

4、课程反馈

在学习GPT课程的时候,跟着课程内容实践代码课程,导入mindnlp库的时候报错,具体是运行以下代码的时候:

import os

import mindspore
from mindspore.dataset import text, GeneratorDataset, transforms
from mindspore import nn

from mindnlp import load_dataset
from mindnlp.transforms import PadTransform, GPTTokenizer

from mindnlp.engine import Trainer, Evaluator
from mindnlp.engine.callbacks import CheckpointCallback, BestModelCallback
from mindnlp.metrics import Accuracy

报错:

ImportError: cannot import name 'Truncate' from 'mindspore.dataset.text' (/home/ma-user/anaconda3/envs/MindSpore/lib/python3.7/site-packages/mindspore/dataset/text/__init__.py)

我在启智社区创建的调试环境,镜像是
mindspore_2.0.0_notebook,使用pip 命令下载了mindnlp,但还是报错。

报错二:ImportError: cannot import name ‘GPTTokenizer’ from ‘mindnlp.transforms’ (/opt/conda/lib/python3.7/site-packages/mindnlp/transforms/init.py)
在这里插入图片描述
暂时还没有解决办法。

安装mindnlp时报错:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
transformers 4.35.0 requires tokenizers<0.15,>=0.14, but you have tokenizers 0.15.0 which is incompatible.

解决办法:
降低tokenizers版本:

pip install tokenizers==0.14.0

希望技术公开课的实验部分可以写清楚需要的环境和MindSpore版本是什么,以及跑通代码所需的依赖。

5、使用MindSpore昇思的体验和反馈

在学习MindSpore技术公开课的时候,我喜欢MindSpore昇思的设计理念,特别是其支持全场景、全流程AI开发的灵活性。其采用了图模型的思想,使得模型构建更直观,易于理解。同时,MindSpore昇思提供了丰富的工具和功能,如自动微分、模型并行训练等,使得深度学习任务的实现更加便捷和高效。然后MindSpore的安装命令也非常简洁,在启智社区还有对应的MindSpore镜像版本可以使用,非常方便学习。

6、未来展望

通过深入学习大模型的可成——GPT的原理和应用,我在自然语言处理和文本生成领域的理解更加深刻。掌握了预训练和微调等关键技术,我能够更有效地利用大规模数据训练模型,提高在特定任务上的性能。

在科研方面,课程使我更加了解人工智能领域的最新进展,尤其是大型预训练模型在语言理解、生成和其他复杂任务上取得的显著成果。这启发了我在未来研究方向的选择,促使我更深入地探索和应用先进的深度学习技术。

基于课程学到的知识,我对人工智能和大模型的发展和应用充满了期待。我相信随着技术的不断进步,大模型将在更多领域展现出强大的能力,如医疗、自动驾驶、智能推荐等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/331877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC(全局异常处理.动态接收Ajax请求)

1.全局异常处理 1 异常处理器 基于AOP 用户发起请求, SpringMVC接受请求, SpringMVC加载静态资源问题说明 请求过去了,但没有处理 规则说明:静态资源进入SpringMVC框架之后,没有找到要怎样处理静态资源的方法,所以他们就不解决,也就不显示 解决方法:SpringMVC基于Servlet处理…

Go 中 slice 的 In 功能实现探索

文章目录 遍历二分查找map key性能总结 之前在知乎看到一个问题&#xff1a;为什么 Golang 没有像 Python 中 in 一样的功能&#xff1f;于是&#xff0c;搜了下这个问题&#xff0c;发现还是有不少人有这样的疑问。 补充&#xff1a;本文写于 2019 年。GO 现在已经支持泛型&am…

强化学习与监督学习【区别】

强化学习很强大&#xff0c;但是有大多数场景毫无使用它的必要&#xff0c;监督学习就够了。下面分析强化学习和监督学习的区别和强化学习有前景的应用。 目录 决策是否改变环境当前奖励还是长线回报总结 决策是否改变环境 监督学习假设模型的决策不会影响环境&#xff0c;而强…

CSS笔记II

CSS第二天笔记 复合选择器后代选择器子选择器并集选择器交集选择器伪类选择器 三大特性继承性层叠性优先级优先级-叠加计算规则 Emmet写法 背景属性背景图平铺方式位置缩放固定复合属性 显示模式转换显示模式 复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通…

django电影推荐系统

电影推荐 启动 ./bin/pycharm.shdjango-admin startproject movie_recommendation_projectcd movie_recommendation_project/python manage.py movie_recommendation_apppython manage.py startapp movle_recommendation_applspython manage.py runserver Using the URLconf d…

vue3自定义按钮点击变颜色实现(多选功能)

实现效果图&#xff1a; 默认选中第一个按钮&#xff0c;未选中按钮为粉色&#xff0c;点击时颜色变为红色 利用动态类名&#xff0c;当定义isChange数值和下标index相同时&#xff0c;赋予act类名&#xff0c;实现变色效果 <template><div class"page"&…

Python-基础篇-类与对象/面向对象程序设计

文章目录 思维导图是何物类定义类&#x1f4da; class类的成员&#x1f4da;类的继承性&#x1f4da;封装性&#x1f4da;多态性 对象面向对象&#x1f4da;创建对象&#x1f4da;销毁对象&#x1f4da; 类和对象关系必背必记专业英语学习角 思维导图 是何物 类 “类”是物以…

基于面向对象的,C++实现二叉搜索树的一系列操作

1.树 树是由节点和边组成的一种可以表示数据的层次结构 根节点&#xff1a;树的最顶端的节点 叶节点&#xff1a;树的最底层的节点 子节点&#xff1a;通过边相连的位于下层的为子节点 父节点&#xff1a;通过边相连的位于上层的为父节点 层次&#xff1a;一个节点到根节点的距…

HashMap学习和线程安全的HashMap

HashMap的底层数据结构&#xff1f; HashMap在JDK1.8里面的Node数组加链表加红黑树&#xff0c;当链表长度大于8且数组长度大于64&#xff0c;链表转化为红黑树。当红黑树节点数小于6&#xff0c;红黑树转化为链表。在JDK1.7中是数组加链表。 为什么要用红黑树&#xff1f; 当…

【C语言】- 设置控制台文字颜色、大小和字体

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体 文章目录 【C语言】- 设置控制台标题、编码、文字颜色、大小和字体1 - 设置控制台标题2 - 设置控制台编码3 - 设置控制台字体和大小参考链接 1 - 设置控制台标题 因为要用到 Windows API&#xff0c;所以需要包含头文件…

hub汉语有轮毂的意思吗?

问题描述&#xff1a;hub汉语有轮毂的意思吗&#xff1f; 问题解答&#xff1a; 是的&#xff0c;"hub"&#xff08;中文翻译为"轮毂"&#xff09;是指机械装置中的一个中心部分&#xff0c;通常用于连接或支持其他部分。在车辆的轮胎系统中&#xff0c;…

算法学习系列(二十四):二分图

目录 引言一、二分图二、染色法三、匈牙利算法 引言 这个二分图作为平常我是不怎么知道的&#xff0c;但是在算法竞赛中还是能用得到的。本文主要介绍了染色法&#xff1a;用来判断如否为二分图&#xff0c;匈牙利算法&#xff1a;求出二分图最大匹配数。 一、二分图 二分图…

【Linux】权限的深度解析

前言&#xff1a;在此之前我们学习了一些常用的Linux指令&#xff0c;今天我们进一步学习Linux下权限的一些概念 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:Linux的学习 &#x1f448; &#x1f4af;代码仓库:卫卫周大胖的学习日记&a…

全流程机器视觉工程开发(一)环境准备,paddledetection和labelme

前言 我现在在准备做一个全流程的机器视觉的工程&#xff0c;之前做了很多理论相关的工作。大概理解了机器视觉的原理&#xff0c;然后大概了解了一下&#xff0c;我发现现在的库其实已经很发展了&#xff0c;完全不需要用到非常多的理论&#xff0c;只需要知道开发过程就可以…

HFSS笔记/信号完整性分析(一)——常用快捷键+建模技巧

文章目录 1、常用快捷键2、常用建模技巧2.1 如何由一个无厚度的sheet生成一个有厚度的2.2 如何绘制T形截面的传输线&#xff1f;2.3 自动建立辐射边界法一、法二、 仅做笔记整理与分享。 1、常用快捷键 快捷键功能CtrlDfit it all 以合适的尺寸至于窗口中间CtrlH隐藏object或者…

【XTuner 大模型单卡低成本微调实战】学习笔记

参考学习教程【XTuner 大模型单卡低成本微调实战】 理论 Finetune简介 大语言模型 微调模式 增量预训练 指令跟随微调 LoRA和QLoRA Xtuner介绍 实战 自定义微调 用 Medication QA 数据集进行微调 将数据转为 XTuner 的数据格式 目标格式&#xff1a;(.jsonL) 写提示词请C…

算法练习-A+B/财务管理/实现四舍五入/牛牛的菱形字符(题目链接+题解打卡)

难度参考 难度&#xff1a;简单 分类&#xff1a;熟悉OJ与IDE的操作 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 A B1. A B - AcWing题库财务管理1004:财…

C语言学习之字典(单词拆分)

实例要求&#xff1a; 1、给定字符串以及字符串列表作为字典&#xff1b; 2、判断是否可以利用字典中出现的单词拼接出字符串&#xff1b; 3、不要求字典中出现的单词全部都使用&#xff1b; 4、字典中的单词可以重复使用&#xff1b; 实例分析&#xff1a; 1、初始化数组…

对java的interface的理解

一个例子来让我们理解更加深刻 这是我们的整体文件布局 ①A是接口 ②B和C是用来实现接口的类 ③show是我们的运行函数&#xff0c;用来展示 A接口 接口中定义的方法可以不用去实现,用其他类去实现(必须实现) 关键字:interface public interface A { // public static …

Android Activity的启动流程(Android-10)

前言 在Android开发中&#xff0c;我们经常会用到startActivity(Intent)方法&#xff0c;但是你知道startActivity(Intent)后Activity的启动流程吗&#xff1f;今天就专门讲一下最基础的startActivity(Intent)看一下Activity的启动流程&#xff0c;同时由于Launcher的启动后续…