speaker 1: 像刚刚有提到说我们的目标就是要调整这个link model嘛。 可是调整一个参数非常多的model好像不太可行,所以就会衍生出越来越多各式各样聪明的方法,让我们可以用比较小的course,就是调整比较少的参数,但也可以达到类似的效果。 那这样子一来其实就更加实际。 那在比如说在学术界也比较可比较能做好。 那为什么我们要做这个efficient的aptation呢? 好,那其实这边有11个嗯有一些分析讨论。 那他们就是发现说哎在现在这种AI的这个paradigm上面,大部分的这些paper focus比较多是focus在accuracy instead of efficiency,就是大家只着着重在我的performance到底怎样。 所以你会看到大部分的paper里面,report都是很多table里面的数值嘛,就是performance。 可它并通常不一定会说哦,这个是花了多少时间才训练出来的,对不对? 然后你看到他就做做了一些比较这边有几个就是AI领域比较知名的conference,有领域的,然后那个领域,然后还有machine learning面的这个。 然后他就他就去算这个words,然后去看说有哪有多少量的paper是focus在这个方向上面,那你会发现说focus在performance,也就是这上面的是远高于efficiency。 对那当然也有也会有一些bo的啦。 好,所以这倒告诉我们说嗯,目前大家在做这些research或在做产品的时候,我们实际上花费的这个course,其实是没有被大家考虑进去的。 就是你虽然做到这么好的performance,但你花了更多的effort。 这些其实是没有把这个把把这个把这个additional的course,就是呈现在你呈现给他的这个table里面。 那随着现在的这个training course越来越高,你就会发现这种过去这种以C为主的这些发展,就会渐渐的被比较有钱的组织啊,尤其是业界给多的,为什么呢? 因为他们就有比较多的资源啊,所以他们才比较有机会做出比较高的。 因为这些其实是没你没有被考虑进去的,所以这才衍生了非常多这些学术界的sear会, 觉得说我们必须要有一些更不错的方式,然后也可以做到performance很好,但是相较之下co也比较低的这些方法。 所以渐渐的越来越多论文就开始开始focus在这种training的cost training effency上面做讨论。 你看到那个时候是2018年哦,所以其实都还就是早在那个开始之前就是这样子的方向。 那现在如果再去看的话,会越会比过去多非常非常多。 着重在eff的paper上面。 好,那我们来想一下就是要怎么减少我们需要tun的参数。 那假设说哦这是一个pre的language model啊,那这个橘色是什么呢? 橘色就是里面的很多很多很多vector,那很就是里面的这些wait啦。 因为每一层不就是就是一个fefor或或attention嘛,所以里面有非常非常多的wait。 那假设原本是橘色的那经过了天之后啊,假设全部都被我做了这个,然后全部变成这个紫色。 那想象中其实就是把原本的这个H然后反正每一个都会做一些微调,对,然后回调之后呢就会变成H所以这是理想上,如果我可以做到所有的wait,就是直接把这个贝塔拿过去做,那这是理想的情境。 好,就是这个H pro可以从H变成H pr那, 他们之间的差异就是一个delta H那有一个还蛮有名的方法呢叫做adapter adapter他的想法就是这样子。 好,假设现在我们的模型呢大部分都是transformer类型的模型嘛。 那transformer之前也就是讲呃大家也了解它的细节里面就是有非常多重复的这个transformer的这个block,然后里面会有attention啊,然后后面会有这个forward,对,然后做一些zation,然后每一层都是呃每一个block里面都是长这样子。 好,那现在呢他希望能够做一些微调微调这些阐述,那他他的想法是什么? 他的想法就是哎这些橘色的原本就有的东西我要keep住,完全不要动,那我要多加上紫色的部分叫做adapter。 也就是当我过了这个呃attention之后,那我希望再过一个这个adapter可以调整它参数。 那原本这个模型里面有的所有橘色参数我都不动,我只是在上面多加了additional的layer。 好,那这个怎么使怎么implement呢? 哦,概念上其实也蛮简单的,你想我刚刚我们的目标是不是要把H变成H加delta,H变成H pr嘛. 好,那他怎么做? 假设说这边这个橘色进来这边是H那理想上经过fine tun后是不是会变成H pr那? 他怎么去模拟这个H pr的情况,就是把这个H那这边是它额额外多加上的这个参数嘛,呃多加上了这个layer,它就可以tun这个layer。 那这个layer tun出来它的目标其实就是他在他在学这个第H刚刚有说到H pr是, 不是就会变成变成是H加上H所以他的目标如果是可以训练这个H然后最后再把这个原本的加在一起。 基本上它这个凹铺从这边出去之后,其实就等同于是H pr就, 像是这一个,然后经过佛之后的这个H就是在这一块,那后面这一块也可以做同样的事情。 所以他其实就是在模拟这件事情,模拟哎我只我只额外的学一个delta H然后可以影响原本的H变成H pr那H变成H pr其实就像刚刚看到的,就是从原本全部橘色变成全部紫色紫色嘛,但是现在它不是全部为的调,原本的为的全部都不动。 它多加一个小小的adapter,然后在里面的每一个好,所以概念其实就这样非常的简单。 好,那它有一个好处就是您看呢原本的模型其实是完全不会动到的所有的任务。 好,假设现在我要听这个模型,让他可以在比如说什zation做的很好好了,所以我就把这个summarization adap方向去,然后tuning tuning tuning。 好,那tuning完了之后,好假设说现在我要做嗯translation了,那我就把这个sumsummarization adapt拔掉,然后换成另外一组adapter,然后再tuning tuntuning,让它在translation上面做的好。 所以每一个任务它都会有一个test specific的一个就是这个adap所, 以它就可以它就可以拔掉,有点像是一个嗯你可以直接插上去可插拔的一个方式。 对你要用A任务的时候,你就把这个A插进去,然后要用B的时候就把B插进去。 那所有的这些任务它还是会共用原本的这original的这个model。 但是这种可插拔的好处你嗯有几个,一个就是你就不用担心说你。 听之后原本的整个坏掉,因为它不会坏掉,你把它拔掉,你把这个ap拔掉就好。 它还是跟原本的一样,就是不会有这个over或就导致它烂掉的风险。 然后每一个每一个任务只需要存这个adap就行了,就你不会是原本你可能tun一个model,把这个model成a task,你是不是要把整个位存下来,成B也要把整个存下来,那你这个story就会比较耗呃空间。 但现在你只要存这个A跟B的adapter,所以更更能够省这个storage,然后也比较robust。 好,那刚刚呢是第一个方法。 那第二个方法呢就是非常的有名,叫做Lora。 好,它的这个loa其实就是low rank的意思,就是low rank adaptation。 所以这个L这个O会是小写,然后这个R跟A就是low rank adaptation。 好,那是什么意思呢? 他的想法是这样子,他的想法就很聪明。 这边也是刚刚我们看到这个transformer的block里面的这个呃大致上的样子嘛,那想象中是不是我们就是要把这些参数做一个调整。 好,那它的它的idea是什么? 什么叫做low rank? 好意思就是说我们的这个我们里面的这些所参数,你可把它想成就非常非常多个vector,非常多的要做调整嘛。 好,那调整可以有非常非常多不同的细节的这个weight的值可以进行调整。 但是他想他觉得如果我们现在在做一个adaptation概念上,你可以把它想成是就是把这个模型往一个某个方向上面移过去。 所以这个方向其实是一个相较之下比较high level的概念。 对它不不一定会是哦你每一个wait都要往就是要一个加一一个加一个减一么就是一个一些细节,而是它调整的状况比较像是一个high level的方向。 所以这个low R对应的其实就像是在这些的里面的一个eivector。 如果我们做一些简单的这个你的这个大空间上面的微维的调整,就是有点像是你每一个轴在这个高维空间中的每一个轴做一点点的微微的转动、微微的调整、微微的变动。 哎,那其实整个wait就会都不一样了嘛。 他他的想法就是这边的这个调整其实是一个high level的方向,所以实际上我们不需要考虑。 我们大致上可以想象,如果我可以知道这个大方向是怎么转的,基本上就等同于我们知道所有的wait是怎么调整的嘛。 好,所以它的示意图就是这样这样子。 好,这个啊它也是一个additional的的资讯,然后在这个原本的link model旁边。 好,那他怎么做的呢? 我这边要看一下这个细节。 好,假设刚刚看到这个feforward这个部分,好,forward这部分原本原本它就是这这个layer,然后过来变成这个H那刚刚是不是说到我们是希望把这个H变成H嘛? 这个H就是H加delta H那它的implement其实跟刚刚的那个和概念其实是有点像的哦。 好,但是这边有一个非常重要的地方在这里,就是他现在呢要把这个H然后学一个这个delta H然后再把这个delta H加在这里面嘛。 好,所以这边的这个东西是什么? 这边的这个东西它的重点就是它中间在学的时候是给他一个维度比较小的这个vector,有点像是头Eck。 也就是说他有点像是把这个比较高稍微比较高维的压到一个比较低维的空间,让它可以在这个低维空间做调整。 在这个低维的中间中调整之后,我展开到原本的这个维度,才可以跟原本的这个呃维度一样才可以加在一起。 所以这边就只是把低维空间的展开回去而已,所以还一点想,原本是一个高维空间的一个点嘛。 好,那他现在就是把它降维降维到只有嗯比如说只有两维,然后在这个两两维的空间中让他做一些微微的,就是让他根据data塔决定他往哪个方向。 好,然后他在这个两维的空间中知道它的方向了之后,我再把它转回去。 原本这个高维空间,那是不是你只你要存的东西就只有这两维空间中的这个调整就好了。 然后你要听你的东西,也就只有这个小小的资讯。 然后他展开之后,展开到原本的高维空间,它就跟原本的就可以加在一起,然后就得到我们想要的这个H pr然后这边就是tuning的时候,我们预计要tun的, 所以我们要tun的东西非常非常的少。 当然这会depend on你这边用多少个dimension啦,就是你是把它压到多少个,就是考虑多少个rank。 好,所以他的想法呢就是我们在做link model的fine tun的时候,我们是在update这些wait嘛。 那在update这些wait,其实概念上给我们的其实是一个比较嗯high level的,为在这个空间中level的一个方向。 你可以把它想成其实就是一个low intrinsic的一个information,可以让它只存这个小小的资讯,那你就可以保有。 我知道这个微调是往哪个大方向去调整,所以实际上被调调整的这些位的数量还是很多的。 可是你只要存很少东西啊,你可以看一下它的performance在GPT -3上面呢,然它是一个非常大的模型,它是用175B来做这个实验。 然后如果是用fine,好,这个是你所需要训练的参数量哦,反正就是机器的惊就是175B嘛。 好,那如果你用这些是一些其他的比较呃那个meter的fine方式,那这是它的比较的basline,然后这就是它propose的方式。 所以你可以根据选择不同尺寸的这个刚刚说中间的那个low R的的的dimen选的数量,然后去决定你要tun你的参数量。 所以在如果他只tun 4.7M那performance就已经可以在这些任务上面到达,就是几乎是最好了。 对那如果可以Q多一点的话,这两个就是会在上升比较多。 那这个其实就是跟这个comparable,所以你可以发现他他就是想要告诉你说,他的performance其实是跟你直接tuning整个for wait其实是差不多的。 然后他也秀了一个图,好,这个图怎么看呢? 这是两个不同的data set。 那往右边其实就是你可以圈你的这个参数的量。 对,所以越右边就是co越多,那这边就是纵轴歪轴就是performance,然后这边有非常多不同的方法,然后蓝色就是fine tun所, 以它很右边,因为它就是要tun非常多的东西,然后performance可以到这,然后你们可以看到它的啊是粉红色这一条。 你看粉红色这一条在performance基本上都是在很很高,然后也是相较之下它的那个training的的。 也是比较少的,而且有一些方法它其实是会有点over的. 你看呢因为它调的东西可能是蛮少的嘛,满少就可以调动。 可是当它可以调多一点的时候,它其实就会就会drop了,所以弯弯的这样其实不太好支热这样比较好。 所以他的最后的结论就是他认为是在这个performance wise是可以到达很好,而且呢在上面也显示了更好的这个使用情境。 所以A其实就变成是现在大家非常非常常用的一个tunmodel的方式。 那之前讲到这个protuning其实也是一个parameter efficient的fine tuning的方法,因为我们tuning的东西就是prompt嘛。 对,虽然它不是tuning model,但是也是一个tun比较少资讯,然后进而导致我最后是可以回调到我的task上面的方法。 所以其实这种pro的方法其实也可以拿来一起跟model的fine来做比较,所以就有另外一篇论文。 但是因为这很难比较嘛,因为嗯你tun的量其实是不太一样的。 你如果是tuning adapter,你如果是tun刚刚说的那个low low rank那个vector,或者是你tuning的是这个promp,其实你tun的这个可动的这些位实在是差异太大太大了,所以要做一个很好的比较也不容易。 那这篇论文呢它就算是在比较呃fair的情况下,然后去做不同方法上面的的讨论跟分析。 好,然后它主要就是比了这个fine tunfine,tun就是for wait,然后adapter就刚刚讲的,然后还有一个tun那个perfect tuning,大家之前有也有学过,就是是tun的部分。 那这是刚刚说到这个啊,然后在非常多不同的task上面,他就想说哎那到底哪一个会比较好呢? 好结论就是诶没有一个最好,就是每一种都有各自擅长的地方。 对,这就是他的结论。 对所以他在这他这篇论文他propose一个有点像是组合所有的方法的一个approach,就是把它全部组合在里面。 你看啊在这儿,然后这个有perfect,这边有adapter布拉布拉布拉。 对,因为他觉得no one can fit哦,所以应该要就是应该要全部放在一起。 可是全部放在一起你要怎么让他学习控制,说到底是现在要用哪一个呢? 所以他的这些选用某一个的时候,都有一个gate让他去决定说哦要不要使用这个方式。 然后就这个gate他就会自动学习要怎什么时候该打开,什么时候不该打开。 所以其实他想法也还蛮嗯蛮合理的。 对,然后他也做了实验,然后training过后,然后performance的确就是相较之下比起来,的确就是比这种individual再好一些,那当然整个的model就会比较大对。 好,那刚刚我们看到for improvement在我们已知的这些任务上面,我们是可以让他变得更好的。 就是透过这个已知的任务的data来去tuning,不管tuning我们prop或是tuning我们的link model。 但是其实还有另外一个要improve的方向,因为我们是通采嘛,对不对? 所以除了已知的任务,尽可能的考古题全部都做,然后做的很好以外,哎,在未知的任务上面我也希望他也还是要很不错嘛,因为它是通彩啊,这不就是我为什么要使用这个通彩的。 一开始motivation嘛就是希望他能够handle unknown的unknown的状况,可是既然它是弄,我要怎么让它handle呢? 所以在实际上对实际上的应用跟产品大家是怎么做的? 好,基本上他的做法就是我既然我有一些现成,但考试本来就会考的。 但有一些我不知道这些使用者会出什么奇奇怪怪的题目嘛,所以我就要尽可能去收集各式各样不同任务的这些额外的资料。 因为有有一些是我的考古题里面本来就包含了,我就直接选进去,这是弄的那还会有很多弄的那我就要收集。 比如说我就找一些人人来帮我出个考题,那他可能就会考出哎我可能之前不知道的这些这些任务嘛,那我就可以再把它学进去。 所以他的想法就是我就是要收集尽可能越来越多不同diverse这个task,我才能够让这个通才这种通用的能力可以上升。 那他在handle未来更多没见过的任务的时候,performance还是可以keep住。 那其实这个方法呢就是g p 3.5所做的,就是叫做它它就是用F的概念,也就是透过这个human的feedback,然后再improve他自己。 那这个human的feedback其实就是这一块,就是去收集human可能的出题,然后又是un弄的。