NTU ML2023Spring Part1(合集)

License: CC BY-NC-SA 4.0

闲话

本文为 Part 1 的合集。或者算是自己的备忘录?

由于视频源在 youtube 上,为避免网络不稳定导致观看体验下降,我用 yt-dlp 提前下载视频到本地看。

yt-dlp --output "%(playlist)s/%(playlist_index)s. %(title)s.%(ext)s" --embed-subs --add-metadata --merge-output-format mp4 "https://www.youtube.com/playlist?list=PLJV_el3uVTsOePyfmkfivYZ7Rqr2nMk3W" --cookies-from-browser firefox

但是好像在手机上只有 mpv 可以看到字幕。

下面是目录。

ChatGPT 是什么

GPT: generative pretrained transformer.

GPT 其实是一个从一段文字到下一个文字概率分布的函数。

监督式学习:有一系列 input/output,机器自己学习里面的规律。

网络上每一段文字都可以教机器做文字接龙。

ChatGPT 之前的 GPT,例如 GPT 与 GPT-2,也可以回答问题。

GPT-3 的资料根据人类 finetune 就变成了 ChatGPT。

大概分以下步骤:pre-train -> fine-tune -> reinforcement learning(只要评价好/坏即可)

预训练的作用:在多种语言上预训练后,只要教某个语言的某个任务,自动学会其他语言的同样任务。

如何精准提出需求:对 ChatGPT 进行催眠(prompting).

neural editing:让局部的调整不影响整体。例如「最近一次 IOI rk1 的队伍」

machine unlearning:对 LLM 施遗忘咒,让它不要学一些隐私信息。

用 ChatGPT 和 Midjourney 玩文字冒险游戏

chatgpt 生成文字提示,midjourney 生成插图。

LHY 上课现场演示了玩两局游戏的过程。

机器学习基本原理

  • 回归regression:输出的是 int
  • 分类classification:输出的是 enum

structured learning:生成有结构的东西(视频,句子)。又叫 generative learning.

找出 ChatGPT 使用的函数取决于想要做的应用。

候选函数的集合:Model(如 CNN, RNN, Transformer)

评价函数好坏的标准:Loss

supervised learning 可以给出比较准确的 loss,semi-supervised learning 可以给出大概评价。

找出一个初始函数后,用 optimization algorithm 对其进行优化以降低 loss。

生成式学习的两种策略

生成有结构的东西:以 token 为单位。

中文的 token 就是「字」,英文的 token 是 word piece。

例如:unbreakable = un + break + able.

图片的 token 就是像素。

策略一:各个击破(AutoRegressive model)

策略二:一次到位(Non-autoregressive model)

图片生成常用一次到位(前后文没什么关联度),文字常用各个击破(前后文要有联系)

语音:结合了两个策略的优点。先用各个击破产生中间产物(向量),它决定了大方向;再一次到位。

也有一种改进方案是「N 次到位」,先产生大概再填细节。

能使用工具的 AI:New Bing, WebGPT, Toolformer

能够使用工具的 AI

LHY 演示了 new bing 用网络搜索的能力。

LLM 做出「搜索」这个决定也是由 token 决定的。例如 [SEARCH], some, thing, [END]

那么怎么训练 LLM 来使用搜索引擎呢?还是人来示范。

为了减少人的工作量,可以用另一个语言模型产生资料。

对大型语言模型的不同期待

To finetune or to prompt, that's the question.

  • 期待一:成为专才(finetune)
    • 优点:在特定领域可以胜过通才
  • 期待二:成为通才(prompt)
    • 优点:可以快速开发新功能

对预训练模型加插件——Adapter(例如加一个 layer)

微调时只调 Adapter,这样就可以用(通用的语言模型+特定的 adapter)完成特定任务了。有点像 docker 的思想?

In-context Learning:在对话中学习。类似高考英语听力的「衬衫的价格是九磅十五便士」例题。对于比较大规模的模型有一些效果。

chain of thought(CoT) Prompting:让 AI 展示它的思维链,但不是通过 system message 而是通过在例题的答案里加解题过程得到结果。对于 zero-shot-CoT 就是在提问上加一句话 Let's think step by step.

大模型+大资料=神奇结果?

emergent ability:随 model scale 的增加,accuracy 会先缓慢增长后突然增长。

可以理解为:「因为计算错误而喜提 0 分」与「因为什么都不会而喜提 0 分」之间有差别但无法发现,「得到满分」之后却认为它顿悟了。

在固定的运算资源下,我们应该选大模型小资料还是小模型大资料?答案是中模型中资料。见这里

但 Gopher 采取的策略不一样,于是 Chinchilla(同样的算力,更小的模型)与 Gopher 来了一次 PK. 结果是 Chinchilla 基本获胜。

KNN LM:将输入转成向量,从训练资料中选几个与之最接近(K-最近邻问题)的拿出来做 softmax. 然后依据此对传统的 classification 做加权平均. 然而它在算 distance 时太花时间,导致应用范围有限。

图像生成

想要生成一张图像,不能直接使用「一步到位」,否则可能生成的图片变成好几张不同的图片缝合在一起。为了解决这个问题,可以先用正态分布获得一个向量,这个向量(和输入的 prompt 一起)决定了生成的图像。

但是我们怎么知道一个向量对应哪张图片呢?可以输入图片然后转换成向量(encoder),向量再转回图片(decoder),最后比较前后图片的差异。

diffusion

先 sample 出一张随机图片,然后 denoise 去除噪音,重复多次。可以理解为打码的逆过程。

The sculpture is already complete within the marble block,before I start my work. It is already there, I just have to chisel away the superfluous material. - Michelangelo

Denoise 模组内部其实是通过输入的图片和 denoise 次数来预测 noise,然后在图片上减去 noise.

要训练 noise predictor 也简单,只要把一张图片(和 desciption)不断加 noise 就能得到训练数据。

stable diffusion

一般由三个部分组成:text encoder(解读 prompt 含义), generation model(生成大概), decoder(生成成品)。

评估生成图像的质量:Fréchet inception distance(FID). 要先有一个训练好的 CNN。

diffusion model 背后的数学原理

一些基本概念

  • forward process:向图片里加噪音
  • reverse process:向图片里减噪音。

和想象中不同,训练时的噪音不是一点点加进去的。实际上是先决定一个 tUniform(0,T),然后 image=α¯timage+1α¯tnoise 直接一次性加入噪音。

maximum likelihood estimation:度量两个 distribution 的接近程度. 等价于 minimize KL divergence.

(咕咕咕)

(这部分本来就是 optional,等自己做到 diffusion model 的时候再说吧)

如何炼出丐版 ChatGPT

前置:你首先得要有好一点的硬件。所以其实也不算很丐。

为什么要搭自己的 ChatGPT?

  • 避免敏感数据被 OpenAI 拿去训练
  • 解除一些限制

思路:以 ChatGPT 为标准答案来 finetune 自己的模型。

ChatGPT 可以自我反省

ChatGPT 给出答案后,让它再检查一遍就有可能得到正确答案。

让两个语言模型对话:一个给出答案,另一个挑毛病。这样也可以提升答案的质量。

用语言模型来解释语言模型

让 GPT-2 读一大段文字,然后记录下读每个词时某个神经元的输出,让 GPT-4 来解释。

给出解释后,还可以让 GPT-4 扮演神经元取代 GPT-2 的神经元。

frugalGPT

frugal:节俭

简单来说就是减少使用 chatgpt 的花费。

  • prompt adaptation(缩短输入)

    在 in-context learning 中,可以把问题合并(原来是 Q1 A1 Q2 -> A2 和 Q1 A1 Q3 -> A3;现在是 Q1 A1 Q2 Q3 -> A2 A3),这样就省去了 Q1 A1 的重复。

  • completion cache

    问过的问题可以存起来,以后遇到类似的就直接调用数据库的信息。

  • LLM cascade

    拿简单的问题问弱(便宜)的模型,难的问题问强(贵)的模型。

    具体做起来就是拿到一个问题先去问弱的模型,然后给另外一个 LLM 让它判分。如果分数超过一定值就采用这个答案,否则去问更强的模型并重复这一过程。

posted @   383494  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2024-01-27 在 Lenovo 里交换 Fn 和 Ctrl 键
2023-01-27 为什么pollard rho算法要用x^2+c生成随机序列
2023-01-27 二叉堆模板
点击右上角即可分享
微信分享提示