万字长文:可能是全网最晚的ChatGPT技术总结-1

作者:邱震宇(华泰证券股份有限公司 算法工程师)

最近ChatGPT可以说是火遍了全世界,作为由知名人工智能研究机构OpenAI于2022年11月30日发布的一个大型语言预训练模型,他的核心在于能够理解人类的自然语言,并使用贴近人类语言风格的方式来进行回复。模型开放使用以来,在人工智能领域引起了巨大的轰动,也成功火出了技术圈。从数据上看,ChatGPT用户数在5天内就达到了100万,2个月就达到了1亿;另外,在很多非人工智能领域,已经有机构在尝试用ChatGPT去做一些智能生成的事。例如财通证券发布了一篇由ChatGPT生成的行业研报,从研报的可读性和专业性上来看,虽然在细节上有很多需要推敲的地方,但是整体框架内容已经比较成熟。对于其他内容生产者来说,应用ChatGPT也能够提升个人的生产效率。

ChatGPT的强大能力是显而易见的,但对于人工智能领域不太熟悉的人,对这种黑盒的技术仍然会担忧或者不信任。恐惧通常来自于不了解,因此本文将为大家全面剖析ChatGPT的技术原理,尽量以简单通俗的文字为大家解惑。

通过本文,你可以有以下收获:

1、知道ChatGPT是什么

2、ChatGPT有哪些核心要素

3、ChatGPT能做哪些事

4、ChatGPT不能做哪些事

ChatGPT是什么?

上文说到ChatGPT实际上是一个大型语言预训练模型(即Large Language Model,后面统一简称LLM)。什么叫LLM?LLM指的是利用大量文本数据来训练的语言模型,这种模型可以产生出强大的语言关联能力,能够从上下文中抽取出更多的信息。其实语言模型的研究从很早就开始了,随着算力的发展和数据规模的增长,语言模型的能力随着模型参数量的增加而提升。下图分别展示了LLM在参数量和数据量上的进化情况,其中数据量图例展示的是模型在预训练过程中会见到的token数量,对于中文来说一个token就相当于一个中文字符。

https://www.vinayiyengar.com/2022/08/04/the-promise-and-perils-of-large-language-models/

https://babylm.github.io/

为什么语言模型的参数量和数据量会朝着越来越大的方向发展呢?在早些时间的一些研究已经证明,随着参数量和训练数据量的增大,语言模型的能力会随着参数量的指数增长而线性增长,这种现象被称为Scaling Law(下图左例)。但是在2022年之后,随着进来对大模型的深入研究,人们发现当模型的参数量大于一定程度的时候,模型能力会突然暴涨,模型会突然拥有一些突变能力(Emergent Ability,下图右例),如推理能力、零样本学习能力等(后面均会介绍)。

https://franxyao.github.io/blog.html

ChatGPT真正强大的地方在于他除了能够充分理解我们人类的问题需求外,还能够用流畅的自然语言进行应答,这是以前的语言模型不能实现的。下面,本文将ChatGPT一分为二,分别从GPT和Chat两个维度来介绍ChatGPT的机理。值得说明的是:当前OpenAI并未放出ChatGPT相关的训练细节和论文,也没有开源代码,只能从其技术BLOG上获取其大致的训练框架和步骤,因此本文介绍的内容将根据后续实际发布的官方细节而更新。

GPT

GPT全称Generative Pre-training Transformer,由Google在2018年提出的一种预训练语言模型。他的核心是一个Transformer结构,主要基于注意力机制来建模序列中不同位置之间的关联关系,最后可用于处理序列生成的任务。通过使用大量的文本数据,GPT可以生成各种各样的文本,包括对话、新闻报道、小说等等。上面提到了很多次语言模型,这里简单给出语言模型主要的涵义:

给定已知的token序列N_t(对中文来说是字符,对英文来说可能是单词或者词根),通过语言模型来预测t+1位置上的token是什么。实际上模型输出的是所有token在t+1位置上的概率向量,然后根据概率最大的准则选择token。大家在使用ChatGPT的时候,一定有发现机器人在生成回复的时候是一个字一个字的顺序,背后的机制就是来自于这边。

cs224n(https://web.stanford.edu/class/cs224n/slides/cs224n-2023-lecture11-prompting-rlhf.pdf)

对语言模型来说,可能大家之前更熟悉的是BERT,BERT是Google在2018年发布的一种双向语言模型,发布后,其在不同语言理解类任务(如文本分类,信息抽取,文本相似度建模)中都达到了当期时间节点的最好效果。BERT与上述语言模型的机理有所不同,其训练任务相当于让模型去做完形填空任务(官方称为Masked Language Model任务,下文简称MLM),并不是遵循文本一个接一个预测的顺序,其模型机制与人类沟通表达的习惯不太符合。图中左半部分是BERT的示意图,右半部是GPT的示意图,Trm为一个Transformer模型组件,E为输入的token序列,T为模型生成的token序列。其中,实线部分为该位置的Trm能够看到哪些其他位置token的上下文知识。可以看到,对于BERT来说,每个位置上的Trm都能看到任意位置的上下文知识,因此其在具体的自然语言理解任务上会有不错的效果。而GPT则是遵循传统语言模型的模式,例如index=1位置的Trm是无法看到index>1的知识的,因此它在自然语言理解任务上的效果不如BERT,但是在生成任务上会更符合人类的直觉。业界把BERT中的MLM模式称为自编码形式(auto-encoding),把GPT的模式称为自回归形式(auto-regressive)。

https://arxiv.org/abs/2302.09419

大家从BERT和GPT的对比中可以看到,BERT在语言理解上似乎更具优势,那为何现在ChatGPT的模型基座是GPT呢?这就涉及到最近两年逐渐清晰的NLP任务大一统趋势了。

NLP任务大一统

基于MLM训练范式得到的BERT模型虽然在很多语言理解类任务上有不错的效果下游任务,之后整个业界在处理NLP任务的时候通常会遵循预训练模型→下游任务finetune的流程:

这种方式与传统的training from scratch相比,对下游任务数据的需求量更少,得到的效果也更优。不过,上述方式还是存在一些问题:

  1. 处理一个新的任务就需要标注新的语料,对语料的需求比较大,之前已经做过的任务语料无法高效利用。即使是信息抽取下面的不同任务(如实体识别和关系抽取两个任务)也无法通用化。

  2. 处理一个新的任务需要针对任务特性设计整体模型方案,虽然BERT模型的底座已经确定,但还是需要一定的设计工作量。例如文本分类的任务和信息抽取的任务的模型方案就完全不同。

对于要走向通用人工智能方向的人类来说,这种范式很难达到通用,对每个不同任务都用单独的模型方案和数据来训练显然也是低效的。因此,为了让一个模型能够尽量涵盖更多的任务,业界尝试了几种不同的路径来实现这个目标。

  • 对BERT中的MLM进行改造,如引入一些特殊的Mask机制,使其能够同时支持多种不同任务,典型的模型如UniLM(https://arxiv.org/abs/1905.03197)

  • 引入额外的Decoder,将BERT优化改造成能做生成式的模型,典型的工作有BART(https://arxiv.org/abs/1910.134611),T5(https://arxiv.org/pdf/1910.10683.pdf3.pdf333),百度的UIE(将任务设计生成text-to-structure的形式实现信息抽取的大一统 )。我对T5比较熟悉,之前也写过相关的分析,这个工作算是比较早地尝试将不同任务通过文本生成的方式进行大一统。如图所示,T5训练时直接输入了不同下游NLP任务的标注数据,通过在原始文本的前端添加任务的提示文本,来让模型学习不同任务的特性。如翻译任务可以是”translate English to German”,分类任务可以是跟具体分类目标有关如”cola sentence”,也可以是一种摘要任务”summarize”。

  • 怎么样,是不是觉得跟ChatGPT的模式有相似的地方?

    这种方式可以同时利用多种NLP任务相关的公开数据集,一下子就把预训练任务从语言模型扩展到了更多任务类型中,增强了模型的通用性以及对下游任务的理解能力。

    T5数据构建实例
  • 除了上面两种方式外,还有其他改造BERT的方法就不穷举了,如苏神通过Gibbs采样来实现BERT模型的文本生成等。(https://kexue.fm/archives/8119)

  • 虽然有很多大一统的路径,但是OpenAI一直坚持着GPT的方向不断演化着,2019年他们发布了GPT2,这个模型相对于GPT来说,主要是扩大了参数量,扩大了训练语料,在构建语料的时候隐式地包含了multitask或者multidomain的特质,最后在二阶段验证模型的时候并不是直接做有监督的finetune,而是继续用下游数据做无监督的训练,最后的效果居然还不错,证明了只要模型够大,就能学到足够的知识用于处理一些下游任务。从它的论文名字就可以看出来与其核心思想:Language models are unsupervised multitask learners 。不过彼时,BERT及其各种变种在领域中的应用还是更广的,真正让GPT系列模型惊艳众人的工作还是要数2020年发布的GPT-3模型。(https://arxiv.org/abs/2005.141655)

    GPT-3

    首先,说几个跟GPT-3相关的数字:

    OpenAI训练初版的GPT-3,比GPT-2整整用了15倍的语料,同时模型参数量扩展了100多倍。这么多资源的投入,使得GPT-3成为了一个“庞然巨物”,其产生的效果也是惊人的。除了在很多NLP的任务上有着很不错的指标外,其本身也产生了一种前所未有的能力——In-context learning。

    何为In-context learning?

    简单来说,就是模型在不更新自身参数的情况下,通过在模型输入中带入新任务的描述与少量的样本,就能让模型”学习”到新任务的特征,并且对新任务中的样本产生不错的预测效果。这种能力可以当做是一种小样本学习能力。可以参考下图的例子来理解:其中,task description和examples用来帮助模型学习新任务,最后的Prompt用来测试模型是否学会了。

    与传统的小样本学习范式还是有所不同,之前主流的小样本学习范式以Meta-learning为主,通过将训练数据拆成不同的小任务进行元学习。在学习的过程中,模型的参数是一直在变化的,这是最大的一个不同点。

    那不更新参数的小样本学习有什么好处呢?

    对于大模型来说,这可是极佳的特性。因为大模型的微调成本通常都极为庞大,很少有公司能够具备微调训练的资源。因此,如果能够通过In-context learning的特性,让大模型快速学习下游任务,在相对较小的成本下(对大模型进行前向计算)快速完成算法需求,可以大大提升技术部门的生产力。

    In-context learning的效果固然惊艳,但是对于一些包含复杂上下文或者需要多步推理的任务仍然有其局限性,这也是业界一直以来致力于让人工智能拥有的能力——推理能力。那么大模型具有推理能力吗?对于GPT-3来说,答案是可以有,但有一定的限制。我们先来看看它有的部分。

    还记得文章开头提到的大模型的涌现能力吧,In-context正是属于当模型参数量达到一定程度后,突然出现的能力之一。那么除此以外,还有什么能力是涌现的呢?答案就是——Chain-of-thought,即思维链能力。

    怎么理解In-context learning?

    GPT-3拥有的In-context learning能力可以说有很大程度来自于其庞大的参数量和训练数据,但是具体能力来源仍然难以溯源。不过,最近已经有一些论文专门针对其进行了研究,如清华大学、北京大学和微软的研究员共同发表了一篇论文:https://arxiv.org/abs/2212.105599,探索了GPT作为一个语言模型,可以视作是一个元优化器,并可将In-context learning理解为一种隐性的微调。

  • 何为Chain-of-thought(COT)?

    实际上是对输入的Prompt采用Chain-of-thought的思想进行改写。传统的Prompt中,对于一个复杂或者需要多步计算推导的问题样例,会直接给出答案作为In-context learning的学习范例与新任务的测试样例输入到大模型中。这样做往往不能得到正确的结果,如图所示:(https://arxiv.org/pdf/2205.11916.pdf6.pdf)

    然而,当我们将上述问题范例中的答案再细化一些,对推到出答案的每一个步骤都写出来,再将测试样例一起输入到模型中,此时模型居然能够正确回答了,而且也能够参照范例中的样例进行一定的推理,如图所示:

    上述的模型输入中,还带有可参考的问题范例,还属于小样本的范畴。诡异的是,有人使用了一种匪夷所思的方法,让其具备了零样本的推理能力:在问题样例的答案中增加一句Let’s think step by step. 然后模型居然能够回答出之前不能回答的问题。

    当然,上图中模型并未直接给出一个简洁的答案,而是给出了推导答案的步骤,论文中则是将上述output与输入模型的Prompt拼在一块,再次输入模型,最终得到了简洁的答案输出:

  • 既然大模型具备了COT的特性,那么就能说明它具备了推理能力了吗?答案是不确定的。因为在更多的复杂逻辑推理类任务或者计算任务上,大模型还是无法回答。简单来说就是他可以做一些简单的小学应用题,但是稍微复杂一点的问题它就是在瞎猜了。具体的例子可以参考这篇论文中的分析:https://arxiv.org/abs/2208.050511

    Chain-of-Thought能力来自于哪儿?

    上一小节在介绍COT特性的时候,都是统一用GPT-3来代表。其实,**原始的GPT-3版本中并没有显著地发现其具备COT特性。**对于大众来说,像是chatGPT突然就有了这样的能力。其实,在chatGPT出来之前,openAI对GPT-3做了很多迭代优化工作。而GPT-3的COT特性就是在这些迭代优化中逐渐展现。但不可否认的是,目前仍然没有确定性的结论说明COT特性来自于具体哪些迭代优化。有些观点说是通过引入强化学习,有些观点则是说通过引入了指令微调的训练方式,也有些观点说是通过引入庞大的代码预训练语料,使得模型从代码逻辑中学习到了相应知识。推测的方式则是根据不同时间节点上的模型版本能力差进行排除法,虽然目前我们受限于技术能力只能从这些蛛丝马迹中去发现一些端倪,但仍然具有一定的借鉴意义。具体的推理过程本文不会重复,感兴趣的可以参考如下博客:https://franxyao.github.io/blog.html.html。

    Instruction-Tuning与RLHF技术

    虽然对于大模型突变能力的来源还不能轻易下结论,但是在其迭代优化过程中,引入的一些技术确实提升了(更准确得说是激活)大模型的能力。根据OpenAI的技术博客所述,ChatGPT的训练方式主要参考了InstructGPT(https://arxiv.org/abs/2203.021555),而InstructGPT主要涉及了两个核心的技术实现:指令微调(Instruction-Tuning)以及基于人工反馈的强化学习(Reinforcement learning from Human Feedback),下面将对其进行介绍。

    Instruction-Tuning

    Instruction-Tuning(下称指令微调)技术,最早来自于谷歌Deepmind的Quoc V.Le团队在2021年发表的论文《Finetuned Language Models Are Zero-Shot Learners》(https://arxiv.org/abs/2109.016522)。在说指令微调前,必须得先介绍下21年初开始业界开始关注的Prompt-learning范式。2021年4月,我在InfoQ的架构师大会上做了一次技术演讲,分享了我们在Prompt上的一些研究实践,如下图所示:

    Prompt-learning最早来自于论文《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》(https://arxiv.org/abs/2001.076766),当时把里面的范式简称为PET(Pattern-exploiting Training)。其核心思想为将不同类型的自然语言理解任务与BERT预训练中的掩码语言模型任务进行转化靠拢。例如对于图中的实体情感分类任务,本身其分类标签是一个三维的空间。我通过设置一个prompt提示文本模板:由此可见,英伟达的舆情是{},同时设计一个锚点,将原始分类目标的空间映射到语言模型中的子空间{正/负/中},通过预测锚点位置的token间接得到情感标签。这种方式的优点在于能够将下游任务与语言模型在预训练任务中的训练范式达成一致,减少下游任务在模型学习迁移过程中的知识损失,在小样本的场景下比普通的Finetune模式会有更好的效果。Prompt-learning实际上是一种语言模型能够股泛化不同任务的方式,从广义层面上来看,可以有多种实现方式,例如上面的PET,本文之前提到的T5模型,以及初版的GPT-3等。指令微调实际上也可以算作是广义Prompt-learning中的一种实现方式(个人愚见)。它的核心思想是尽可能收集不同类型的自然语言处理任务(包括理解和生成),并使用自然语言设计对应的任务指令,让模型试图理解不同任务的指令与特性,最终通过语言模型生成的方式完成不同任务的训练,指令微调实例如下图所示:

    那么指令微调与BERT、T5、GPT-3等Prompt方式有什么区别呢?

  • BERT类的Prompt设计与掩码语言模型任务相关,Prompt模板和锚点要与任务对应,需要一定量的标注样本进行小样本训练。

  • T5的Prompt更像是在预训练时对不同语言任务的数据打上了不同的标记,让模型对语言任务有了初步的理解,但是不够深入,无法应用在零样本的场景。

  • GPT-3的Prompt中,会基于在模型训练过程中见过的数据,更像是让模型将Prompt中的文本进行续写。这种方式可以帮助模型更好地理解用户输入的内容,并产生更准确和自然的输出。但其在零样本场景下效果仍然不佳。

  • 指令微调技术使用Prompt来为模型提供一系列指令或者命令,这些指令或命令会告诉模型应该如何进行特定任务的处理。与GPT-3中的Prompt不同,指令微调中的Prompt是针对特定任务和特定的模型进行设计的,相当于是指导模型如何完成任务。指令微调技术提升了模型的零样本学习能力。模型对于未见过的任务也能够理解并尝试处理。在GPT-3后续的迭代版本中,加入了指令微调后,即使在Prompt中不引入带标注的样本,模型也能够比较好的理解需求并得到不错的效果。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatGPT对软件测试人员的冲击和影响

目前大家都清楚类似chatGPT生成式人工智能的解决方案的大热,作为软件测试人员,或者相关行业的从业人员,需要思考的问题是,我们需要怎样持续学习来应对这种产业升级或者是类似新的技术迭代。 据我的感觉类似chatGPT的人工智能已经对…

信息检索与智能客服技术

目录 一、信息检索(Information Retrieval,IR)概要1.1 概述1.2 基本方法和模型1.2.1 标引(表示模型)1.2.2 相似度计算(匹配模型) 1.3 基于representation learning的深度匹配模型1.3.1 基于 DNN…

Hugging Face简介

1、自然语言处理究竟要做一件什么事呢? 大家可能经常听到分类,机器翻译,情感分析,智能客服,摘要与阅读理解等想一想我们在长大的过程中,如何来学习语文的呢?难道只是上课背考试题吗?我们语言能力的学习源…

OpenAI文档翻译——搭建第一个自己的ChatGPT应用

这篇主要是讲了重头到位创建一个基于OpenAI API的应用程序的过程,同时给出了Node.js、Python版本的实例代码。应用程序的构建总体来说是很简单的就是一个接口调用,前提是我们需要提供密匙。 如果想要获取更好的结果返回一个是可以给模型提供一些列子从而…

Mac如何下载Rocket.chat软件

公司使用Rocket.chat作为沟通工具, 用Mac的我软件一直安装失败 错误操作如下 使用App Store下载,下载的软件无法打开 正确操作如下 1.去github网站找安装包 https://github.com/RocketChat/Rocket.Chat.Electron/releases 2.找到自己需要的版本&#…

Hello Ai Chat for Chat GPT for mac(人工智能Chat GPT聊天工具)

Hello AI Chat for Chat GPT是一款基于GPT技术的聊天机器人应用程序,它可以通过人工智能技术理解和回复用户的问题。 Hello AI Chat for Chat GPT的一些特点: 智能回答:Hello AI Chat for Chat GPT基于GPT技术,可以理解和回答用户…

ChatGPT通过谷歌L3入职测试,拿到18万美元offer?程序员们该何去何从?

这次,ChatGPT赢麻了! 近日,关于ChatGPT的各类消息冲上热搜,在这个需要大量高水平人才补充的市场转折点上,越来越多的AI产品开始进入人们视野。从AI绘画到ChatGPT,其实用性、可操作性一次比一次完善&#xf…

chatgpt赋能python:Python并行处理文件:加快数据处理效率

Python并行处理文件:加快数据处理效率 Python作为一种高级编程语言,广泛应用于数据分析,大数据处理,机器学习等领域。在处理大量数据时,串行处理速度较慢,甚至可能耗费数小时或数天的时间。因此&#xff0…

打通同花顺问财接口!各类数据应有尽有!股票量化分析工具QTYX-V2.6.4

前言 同花顺的i问财是一个机器人智能选股问答平台,输入一些条件信息就能得到对应的选股结果。 从问财这个平台可以获得各式各样的选股数据,把这些数据融入到自己的股票量化交易平台中岂不是获得到了源源不断的数据源。 于是,我们把问财接口融…

同花顺量化交易平台Supermind股票量化思路--爱问财初探

近期在b站发布了几个关于supermind量化版本的说明,包括如何快速使用和学习supermind,如何快速部署实盘等。b站:大牛的分享 或关注同花顺微信群 ,群内咨询也可。 下面直接上干货: 实盘框架:日线级别from t…

[047量化交易]python获取股票 量比 换手率 市盈率-动态 市净率 总市值 流通市值

import akshare as ak# 获取沪 股票信息 stock_sh_a_spot_em_df ak.stock_sh_a_spot_em() # 获取深 股票信息 stock_sz_a_spot_em_df ak.stock_sz_a_spot_em() # 合并 stock_all_a_spot_em_df stock_sh_a_spot_em_df.append(stock_sz_a_spot_em_df) print(stock_all_a_spot_…

!! A股历史平均市盈率走势图

http://value500.com/PE.asp 一、 A股历史平均市盈率走势图 *数据来源:上海证券交易所 分享到: 354 - 上海A股 深圳A股更新时间 2017年6月7日 2017年6月7日平均市盈率 16.62 34.88 二、市盈率是什么? 市盈率(Price to Earning Ratio&#xf…

使用同花顺F10查看个股概况!股票量化分析工具QTYX-V2.1.9

前言 股票分析中选股是很重要的一个环节,特别是在市场走势普遍向好的环境下,选股比择时更为重要。 原因很简单,就是资金的使用效率要最大化。 比如同样的资金在同样的持股时间下,你的股票只涨了10%,大盘涨幅30%&#x…

简单的低频指数投资一:利用tushare计算指数市盈率

对于广大的投资者来说,投资指数基金是最简单而有效的选择。而目前一种投资指数的方法就是通过市盈率等指标来计算指数的估值,并通过低估买入,高估卖出的方法投资。 然而tushare只提供了上证50,沪深300,创业板等几个大…

股票高频数据(分钟数据)的入门分析方法——已实现波动率的计算(含完整代码)

本文摘要 本文叙述了对股票市场高频数据分析一个简单方法,即已实现波动率的计算和后续的相关研究。 采用上证综指2019年至2021年3年间实时交易价格的每分钟数据,在已实现方差法下计算了各抽样频率下上证综指日已实现波动率的数值(Realized Volatility&a…

Midjourney绘制插画,绘画重来没有如此之简单 - 第12篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 用…

北大郭炜教授《程序与算法(二)算法基础》学习笔记

目录 第一章 枚举例题一 完美立方例题二 生理周期例题三 称硬币例题四 熄灯问题 第二章 递归(一)例题一 求阶乘例题二 汉诺塔例题三 n皇后问题例题四 逆波兰表达式 补充笔记(from theCherno)第三章 递归(二)例题 一 求…

75岁图灵奖得主Hinton离职谷歌!痛悔毕生工作,无法阻止人类AI大战

【导读】入职谷歌10年后,人工智能教父Hinton选择离职。对于造就了如今AI技术繁荣的神经网络,Hinton表示:这是我毕生的后悔。 一觉醒来,整个科技圈惊掉了下巴!!! 深度学习泰斗、神经网络之父Ge…

GPT可以被放任的在问答区应用吗?

GPT可以被放任的在问答区应用吗? 1、CSDN问答乱象2、GPT-4,大增长时代的序幕数字生命离我们到底还有多远?AI 家教/老师/教育 距离独立又有哪些需要完成的过程? 3、老顾对CSDN问答的一些看法老顾对GPT使用者的一些建议 1、CSDN问答…

华语辩论冠军的思辩表达

华语辩论冠军的思辩表达 这是一门思考表达的高阶技术,也是这个时代,每个人的必修课。 学了他,你才能在焦虑的时代学会如何思考与表达观点,才能领先他人。 查看原文下载 上一篇:零基础学photoshop 下一篇&#xff…