# W3_自然語言處理_高宏宇.m4a|長度 02:51:00|model large-v3 on cuda [00:00:00] 有任何疑問或感想,歡迎留言發布,並且記得點讚、訂閱、分享,並且記得點讚、訂閱、分享。 [00:01:21] 这个 [00:01:25] 这个 [00:01:27] 这个 [00:01:31] 这个PBT [00:01:33] 这样应该 [00:01:37] 这样可以吧 [00:01:38] 这样这个画面 [00:01:39] 好 [00:01:40] 然后 [00:01:41] 跳回那个PBT [00:01:43] 然后 [00:01:44] 这样 [00:01:45] 好 [00:01:46] 谢谢 [00:02:16] 这也好了 [00:02:17] 工具列了 [00:02:19] 上次什么还有 [00:02:20] 那个 [00:02:22] 网络有点问题 [00:02:24] 所以我们不要再一下 [00:02:26] 那 [00:02:27] 现在开始 [00:02:28] 现在有streaming [00:02:29] 有 [00:02:30] 那 [00:02:31] 今天呢 [00:02:32] 我们会把这个 [00:02:34] introduction的影片的内容讲一下 [00:02:37] 然后 [00:02:38] 会介绍第一个assignment [00:02:41] 第一个assignment [00:02:43] 是会跟 [00:02:44] week2的 [00:02:45] W2的投影片有点关系 [00:02:47] 不过 [00:02:48] 里面上也是可以做的 [00:02:49] 那我们今天会announce [00:02:51] 这个assignment1的样子 [00:02:54] 好 [00:02:56] 那 [00:02:57] 刚才看到slide有些问题 [00:03:00] 不过也许等一下我们快下课的时候 [00:03:02] 我们再一起看一起回复了 [00:03:04] 那我们就接着我们上礼拜 [00:03:07] 提到的这一个部分 [00:03:09] 那 [00:03:10] 上次我们 [00:03:14] 从 [00:03:15] 1哈vector的方式 [00:03:17] 讲到vector space model [00:03:18] TFIDF的概念 [00:03:20] 但是我们发现说 [00:03:22] 我们没办法让电脑去比对说 [00:03:25] 字的 [00:03:26] 字的相似度 [00:03:28] 就是要完全一模一样 [00:03:29] 它才能够去知道说这是一样的 [00:03:32] 所以它不太知道 [00:03:34] 猫狗卡车这三个东西的区分 [00:03:37] 所以我们是说 [00:03:38] 我们能不能建构一个表示的方式 [00:03:42] 所谓表示在电脑里面就是一堆数字 [00:03:45] 你可以想象它就是一个 [00:03:47] 一个array或是一个vector [00:03:49] 我们能不能建构一个表示的方式里面有 [00:03:53] 含有这个字的一些 [00:03:56] 语义 [00:03:57] 或是它的 [00:03:58] 本身的这种knowledge [00:03:59] 或者是概念在里面 [00:04:01] 所以 [00:04:02] 为什么后面我们都叫做这个叫embedding [00:04:05] 所以 [00:04:06] 理解上你可以说 [00:04:07] 我们是有把这个字的concept [00:04:10] embed在这个数字里面 [00:04:11] 当然我们可以用这个数字来表示这些 [00:04:14] 字词的意思 [00:04:16] 那 [00:04:17] 虽然这个好像是一个蛮trivial的concept [00:04:19] 但是其实我们是希望说 [00:04:22] 在我的空间里面 [00:04:24] 我这些东西是 [00:04:26] 能够一个连续的 [00:04:28] 而且是均匀分布 [00:04:31] 这件事情你可能 [00:04:32] 现在可能没有感觉 [00:04:34] 当你在做第一个assignment的时候 [00:04:36] 你做一做就会知道说 [00:04:39] 这个 [00:04:40] 其实 [00:04:42] 不太有用这样子 [00:04:43] 就是你做出来的东西 [00:04:45] 会有一点问题 [00:04:47] 不是一点问题 [00:04:48] 非常多问题 [00:04:49] 就是说如果把所有的字呢 [00:04:51] 都映射在一个空间里面 [00:04:53] 那我是希望说像这个例子 [00:04:55] 猫跟狗很接近 [00:04:57] 所以它们的 [00:04:58] 上面这个数字应该 [00:05:00] 应该在算相似度的时候是非常接近 [00:05:02] 所以它的cosine夹角很低 [00:05:04] 这样子 [00:05:05] 但是当你做完 [00:05:07] 你做photo vector [00:05:08] 或是你自己用 [00:05:10] 这个已经圈好的embedding [00:05:12] 去看你所熟知的字的 [00:05:15] 意义的时候 [00:05:16] 当然你可以发现猫跟狗也许很接近 [00:05:20] 但是你可能可以发现 [00:05:21] 猫附近的向量 [00:05:23] 就是跟它很接近的向量 [00:05:25] 其实不是猫 [00:05:27] 可能是一些跟猫一点关系都没有的东西 [00:05:31] 那这个东西到底有没有用 [00:05:33] 能不能拿来做我们 [00:05:35] 让电脑理解语义的东西 [00:05:37] 所以这个就可以让你反思 [00:05:40] 当你在做assignment [00:05:41] 我们会问你这些问题 [00:05:43] 就是好像挺怪的这样子 [00:05:46] 但是的确 [00:05:48] 我们可以做出一个这样的vector [00:05:50] 去区分猫跟狗跟卡车的差别 [00:05:53] 那 [00:05:55] 所以我们就先来看 [00:05:57] 怎么至少做出这些概念 [00:05:59] 我可以把它拉开来 [00:06:01] 那这个东西其实一直有发展 [00:06:04] 一直有发展 [00:06:05] 只是到之前 [00:06:07] 我们都希望用统计的方式 [00:06:09] 用去看以前人类的语料 [00:06:11] 去算engram [00:06:13] 给一些sliding window [00:06:14] 算一些co-occurrence的probability [00:06:18] 去算这些东西 [00:06:20] 但是后来发现这个成本相当的高 [00:06:23] 而且 [00:06:25] 效果也不太好 [00:06:28] 那到后来我们就希望说 [00:06:30] 我们不要算probability [00:06:32] 这个我们能不能 [00:06:34] 我们还是based on probability的概念 [00:06:36] 但是我们能不能用训练 [00:06:39] 所谓训练的方式 [00:06:41] 大家如果学过机器学习就知道说 [00:06:44] 有training data没错 [00:06:46] 但是我们如果用一个model去train [00:06:48] 去看这些training data [00:06:50] 我学到这些模型的阐述 [00:06:53] 其实是有点像是去内化 [00:06:55] 这些训练资料所带来的knowledge [00:06:58] 也就是说我们能不能透过模型学习的方式 [00:07:01] 去内化看到的文章 [00:07:04] 然后以后我就可以用这些模型的参数 [00:07:07] 来表示文字的意思 [00:07:10] 所以在2000年后 [00:07:13] 就因为资料变多了嘛 [00:07:15] 然后电脑算力也慢慢的开始增加的时候 [00:07:19] 大家就可以希望就觉得 [00:07:21] 我们可以train这些东西 [00:07:23] 那其实在这个年份 [00:07:24] 大概机器学习慢慢起来 [00:07:26] 就是AI的这个浪潮开始 [00:07:29] 觉得好像有点用的东西慢慢出来了 [00:07:32] 那当然这篇paper其实当然不是唯一的 [00:07:36] 只是说这篇paper其实有点也是触发说 [00:07:39] 好吧那我们可以用NN的方式来train [00:07:42] 这样的一个embedding [00:07:45] 来学所谓的文字的feature vector [00:07:49] 那这篇paper我没有要细讲 [00:07:52] 不过这个图是从paper里面site出来的 [00:07:55] 你可以想象 [00:07:56] 就跟这个这个长相跟现在的有点像 [00:07:59] 反正就是每一个字的 [00:08:01] 从tablelookup出来的embedding之后呢 [00:08:05] 他去把它做一些 [00:08:07] integration [00:08:09] 看用什么样的方式 [00:08:10] 然后最后再去用propriety的方式 [00:08:13] 去train这样的一个supervised的model [00:08:15] 然后去得到这样的embedding的东西 [00:08:18] 这样的架构其实在很多后面我们提到的 [00:08:21] wall embedding的计算都不外乎是长这样 [00:08:26] 它的差别就在于是说 [00:08:28] 有些架构会不太一样一点 [00:08:30] 然后训练资料怎么给 [00:08:33] 大概有些差别就会在这里 [00:08:36] 所以大概从这样的一个年份开始 [00:08:39] 大家就觉得哇这个很有用 [00:08:41] 我们可以给他资料可以用模型 [00:08:43] 可以训练出这些东西 [00:08:45] 我们不用再用找一大堆的人去标 [00:08:48] 所谓的wall feature vector [00:08:50] 就是好啊这个动物 [00:08:52] 这个哺乳类 [00:08:53] 第一个feature应该是标yes [00:08:55] 然后什么什么什么 [00:08:56] 我们不用这样的东西来描述文字太累了 [00:08:59] 这个成本高而且quad也不好这样子 [00:09:02] 我们就不管 [00:09:04] 反正我就给你这个700多维度的东西 [00:09:07] 你自己去学 [00:09:08] 你自己去学里面应该要长什么样子 [00:09:11] 所以就是也是人类偷懒的一个象征 [00:09:16] 反正学不会 [00:09:18] 人学不会就让电脑自己去学 [00:09:20] 好那这一篇当然就是这个 [00:09:23] 为什么benjo这么有名 [00:09:26] 其实大家应该都知道这个人 [00:09:29] 那不过其实你在网络上搜寻benjo [00:09:32] 可能会搜寻到另外一个 [00:09:35] 因为他们是兄弟党 [00:09:37] 他的好像这是哥哥 [00:09:40] 好像他的弟弟也是很有名 [00:09:42] 不过他弟弟好像比较多一点 [00:09:44] 在业界一点 [00:09:45] 就是也有做研究 [00:09:47] 但是有些contribution比较在业界 [00:09:49] 所以你可能可以看到benjo [00:09:52] 然后他们的这个 [00:09:54] 他们的名字是不一样的 [00:09:56] 但是其实兄弟党都很有名 [00:09:58] 这样子 [00:09:59] 然后benjo大家可能知道说 [00:10:01] 反正他当初跟lacuna跟hinton [00:10:05] 拿到这个two in a world [00:10:07] 就是一个划时代的点 [00:10:11] 就是告诉我们说 [00:10:12] 他们这三个人的贡献 [00:10:14] 就是让这整个AI起飞的一个这样的一个trip point [00:10:19] 所以大家如果可以拜读他的论文 [00:10:24] 其实是多看一下这样子 [00:10:29] 所以他们是希望用学的方式 [00:10:33] 而不是用统计的方式去计算 [00:10:37] 这样的过程 [00:10:39] 我放这个图 [00:10:41] 这个是当年这个2019年 [00:10:45] 所以其实也蛮久的 [00:10:47] 就是他们在拿到 [00:10:49] 拿到two in a world那一年的triple AI的conference [00:10:54] 那其实我并没有跟他们合照 [00:10:57] 其实因为他们在讨论事情 [00:10:59] 感觉每个人表情都很严肃 [00:11:01] 我也不太过好意思过去哈啦这样子 [00:11:04] 他就是在一个早餐的地方 [00:11:07] 看到他们三个突然觉得背后能量很高 [00:11:11] 这样子对 [00:11:13] 这个画面有点小 [00:11:15] 这hinton [00:11:17] 其实hinton蛮喜欢站着 [00:11:19] 我也不知道为什么 [00:11:20] 之前他在 [00:11:21] 他在一些keynote场合 [00:11:23] 或者是panel场合 [00:11:24] 大家都坐在那边谈 [00:11:25] 然后他就看他自己就站起来 [00:11:27] 他也没有要干什么 [00:11:31] 他就站起来这样子 [00:11:32] 不过这种厉害人 [00:11:34] 总是有一些不一样的动作 [00:11:36] 这样子 [00:11:37] ok好这个 [00:11:39] 这个是 [00:11:40] 所以其实你发现 [00:11:42] 你在paper看到非常有名的人 [00:11:44] 或是这些 [00:11:47] 得过什么很厉害的奖 [00:11:49] 甚至他们几个都拿到 [00:11:51] 后面都拿到都没有奖 [00:11:53] 你就觉得 [00:11:54] 如果你去参加这些会议 [00:11:55] 好像都可以很近距离的接触到他们 [00:11:59] 这样子 [00:12:00] 所以这个参加会议也是不错的 [00:12:05] 好 [00:12:07] 那当然其实这件事情并不是他们想的 [00:12:11] 不是啊 [00:12:12] 应该是说很早以前就有很多这样的概念下来 [00:12:16] 使得到这样2000年之后 [00:12:20] 我们觉得说 [00:12:21] 这个其实语言的精神 [00:12:23] 我们可以靠计算的方式来做的 [00:12:26] 但是很早以前其实就有了提这样语言模型 [00:12:31] language model [00:12:32] 其实以前在做NLP的人 [00:12:34] 不见得一定要用language model [00:12:36] 因为以前language model其实 [00:12:39] 做做理论 [00:12:41] 就是算算纪律这种做做理论 [00:12:43] 论文看起来比较炫一点 [00:12:45] 但是 [00:12:46] 不见得非常的Practical [00:12:48] 但是它其实是有一个很长的发展历史 [00:12:53] 那这两位呢 [00:12:54] 其实非常重要 [00:12:57] 尤其在电子领域 [00:12:59] 不见得是资讯 [00:13:01] 像第一个这个Markup [00:13:04] 其实如果你看中文 [00:13:06] 马可夫练这样子 [00:13:07] 你有听过这个Markup Chain这样的东西 [00:13:10] 如果你做语音的做讯号的 [00:13:12] 你一定会用到他写的东西 [00:13:15] 这样子 [00:13:16] 那他非常有名的一个学者 [00:13:21] 那年份非常早 [00:13:24] 那其实他当初是在做language [00:13:29] 这样的一个想法 [00:13:30] 其实是这样 [00:13:31] 就是说他有一个故事 [00:13:33] 就是当初大概这个 [00:13:35] 这种年份 [00:13:37] 你可以看看这个年份 [00:13:39] 大概全世界都在干什么 [00:13:41] 这样子 [00:13:42] 其实文明还不是很open [00:13:45] 大家还是在那边打来打去 [00:13:48] 那大家 [00:13:49] 尤其是宗教 [00:13:51] 宗教对于人的想法 [00:13:53] 人的意念这些事 [00:13:55] 其实是很大的控制力 [00:13:59] 所以有很多 [00:14:01] 他们叫神学家 [00:14:02] 但其实也一般像科学家这样子 [00:14:04] 这些人就会觉得说 [00:14:05] 有很多的科学的现象 [00:14:07] 什么都是跟神的旨意有关这样子 [00:14:11] 所以就会有人说这个文字 [00:14:13] 文字的分布 [00:14:15] 基本上它就是来自于神告诉我们的一些事情 [00:14:19] 大家如果有兴趣可以去看 [00:14:21] Markov当初在做这件事情的背景 [00:14:25] 然后Markov他就觉得怎么可能 [00:14:28] 这种科学家应该要这个实证的精神 [00:14:32] 所以他就觉得不会是这样 [00:14:35] 所以他就拿一本书 [00:14:37] 你可以想象那个年代 [00:14:39] 其实没有什么电脑 [00:14:40] 没有什么calculator这样子 [00:14:43] 他就拿一本书自己去说 [00:14:45] 他就算字的出现的frequency [00:14:49] 他就去看这个前后字的关系 [00:14:52] 什么什么 [00:14:53] 他就做了一大堆统计 [00:14:55] 那统计了多少次 [00:14:59] 你可以去查一下 [00:15:01] 他得到一个规则 [00:15:04] 就是母音跟子音之间 [00:15:07] 出现字的频率是不一样的 [00:15:09] 当然你可能看他的结论 [00:15:11] 你会觉得说 [00:15:12] 这好像common sense [00:15:14] 但是呢 [00:15:15] 当你身处在一个 [00:15:17] 大家都会用神的旨意 [00:15:19] 来解释一些科学现象的时候 [00:15:22] 你很难去想象 [00:15:23] 你要怎么去做这样的实验 [00:15:25] 去得到一个这样的结论 [00:15:27] 所以你就要回复到 [00:15:30] 当年那个科学家的情境 [00:15:32] 然后说 [00:15:33] 原来他会有这样的不一样的想法 [00:15:36] 去做这样的一个 [00:15:38] 非常耗时间 [00:15:40] 还是用人去count [00:15:41] 所以你可以把这样的经验 [00:15:44] 我觉得做研究就是这样 [00:15:46] 你就要把这样精神 [00:15:48] 用在你现在在做的东西 [00:15:50] 老师现在没有神的旨意 [00:15:53] 没有 [00:15:54] 老师告诉你就是神的旨意 [00:15:56] 然后你就会说 [00:15:57] 老师这个不太对 [00:15:58] 老师都胡乱 [00:16:00] 那你就会自己去思考说 [00:16:02] 可能有什么不一样的地方 [00:16:04] 然后你自己就会 [00:16:05] 很苦功的去设计一些实验 [00:16:07] 很多很厉害的东西 [00:16:09] 就是这样出来的 [00:16:11] 那大家可能不知道 [00:16:12] 这个母音子音人物 [00:16:14] 这个关系到底有什么 [00:16:16] 他当时的一个东西 [00:16:18] 其实是假设是 [00:16:20] 我现在我的这种event [00:16:24] 或是我的case [00:16:25] 我要产生的这种讯号 [00:16:27] 或是什么 [00:16:28] 我的下一步 [00:16:30] 都会depend on我目前的state [00:16:33] 这个state这件事情 [00:16:35] 是一个virtual的东西 [00:16:39] 那我举一个例子 [00:16:40] 你大概知道 [00:16:41] 这个markov这个概念是 [00:16:44] 做什么 [00:16:45] 就是以前我们会教的时候 [00:16:47] 会用这样的例子 [00:16:48] 就是说 [00:16:50] 有一个赌徒 [00:16:52] 就是有一个骗人家钱的赌徒 [00:16:54] 他就拿了一个骰子 [00:16:56] 他有两个骰子 [00:16:57] 一个是正常的骰子 [00:16:58] 正常骰子 [00:16:59] 骰出的点的几率 [00:17:01] 就是六分之一 [00:17:02] 每个点都是一样 [00:17:03] 但是有一个特别的骰子 [00:17:05] 骰出六的几率非常高 [00:17:08] 二分之一 [00:17:09] 但是因为它锁法很好 [00:17:11] 你其实不太知道 [00:17:12] 它什么时候有对调的 [00:17:14] 这个骰子 [00:17:16] 那这个骰子呢 [00:17:17] 使用这个骰子 [00:17:18] 就是这边的state [00:17:20] 然后你就跟他赌 [00:17:21] 你跟他赌的时候就发现 [00:17:23] 你怎么每次都丢出两点三点这样 [00:17:25] 然后他每次 [00:17:26] 他丢都是六点这样子 [00:17:28] 因为你不知道 [00:17:29] 他什么时候换掉这个骰子 [00:17:32] 那你能做的是 [00:17:33] 你能做 [00:17:34] 你只能观察说 [00:17:36] 我丢的pattern [00:17:37] 跟他丢的pattern的差异的分布 [00:17:41] 所以有点像是说 [00:17:43] 这个骰子就是我的hidden state [00:17:46] 那因为我的hidden state不同 [00:17:48] 所以我emint [00:17:50] 我的出去的event [00:17:52] 我丢出去的讯号也会不一样 [00:17:55] 所以 [00:17:57] 所以我们就可以知道说 [00:17:58] 当我现在看到很多六出现的时候 [00:18:00] 表示它应该有用到它特殊的骰子 [00:18:03] 它的state就从正常的骰子 [00:18:05] 调到特殊的骰子 [00:18:07] 那这个 [00:18:08] 这样的东西 [00:18:10] 它其实可以用在很多地方 [00:18:13] 比如说以前在做人类的DNA序列的判断 [00:18:17] 因为人类DNA序列不是很有规则 [00:18:20] 因为中间有很多的mutation [00:18:22] 很多的这种串来串去的 [00:18:24] 但是它会有一些规则来出现 [00:18:27] 比如说C跟G C跟G [00:18:30] 这边的pattern [00:18:31] 高频的pattern相当的高 [00:18:33] 但是因为它中间有mutation [00:18:35] 所以它中间可能会插了其他的这些DNA进来 [00:18:40] 但是你可以统计一下说 [00:18:43] 我已经进入到一个C跟G [00:18:46] 发生的频率比较高的地方 [00:18:48] 那个在生物上是有一些意义 [00:18:51] 所以他们就用这种概念的 [00:18:54] 这种probability的概念 [00:18:56] 去做了很多 [00:18:58] 它其实可以导引出相当多很有用的技术 [00:19:01] 这是markup chain [00:19:03] 但是它研究的东西不只是markup chain [00:19:07] 只是说你可以想像这件事情 [00:19:09] 然后把刚才的骰子这件事情想到 [00:19:13] 这个字的时候 [00:19:14] 你就可以知道说 [00:19:15] 当我们再讲一句话 [00:19:17] 下一个字 [00:19:18] 它的出现的几率不是uniform [00:19:23] 不是随便都会有可能接的上去 [00:19:26] 一定会有些字 [00:19:27] 会跟随着我前面字的pattern [00:19:30] 而几率比较高 [00:19:32] 那这样的概念 [00:19:33] 其实跟language model其实是一致的 [00:19:36] 其实就是用这种方式 [00:19:38] 来定义所谓的语言 [00:19:40] 那你可以想像 [00:19:42] 你如果用一般你讲的语言 [00:19:44] 来讲这件事情的时候 [00:19:46] 你可能感受比较没那么高 [00:19:49] 但是你可以回去做一件事情 [00:19:52] 你回去把英文或是中文 [00:19:55] 你透过一个hash function [00:19:57] 不管怎么样设计的hash function [00:19:59] 把它转换成一个怪怪的语言 [00:20:02] 把它转成一个特殊的symbol [00:20:06] 但是这个mapping [00:20:08] 你可以一开始用比较简单的mapping [00:20:10] 就是至少是一对一的 [00:20:12] 转换过去之后 [00:20:15] 你其实就看不懂你在写什么 [00:20:17] 因为它就变成一个特殊的symbol [00:20:19] 但是它对应的pattern其实还是一样 [00:20:23] 那你可以在你完全看不懂 [00:20:26] 那个什么字的情况下 [00:20:28] 你就可以用这样的language model [00:20:30] 去了解那句话的意思 [00:20:33] 这样你就比较有感觉说 [00:20:35] 那我做这件事情到底用意是什么 [00:20:38] 当然也不是这么容易 [00:20:40] 也不是这么容易 [00:20:41] 就是我如果不知道每一个token [00:20:43] 每一个character它的概念的时候 [00:20:45] 其实这个也很难做 [00:20:48] 但是以前在破解一些像什么希腊文字 [00:20:54] 古埃及文字 [00:20:56] 什么罗索塔的 [00:20:59] 反正就是那个古文碑文 [00:21:01] 其实也大概用这种方式 [00:21:02] 也是用统计频率的方式来做这件事情 [00:21:06] OK [00:21:08] 那之后当然这个Chanon呢 [00:21:10] 它其实它年份比较更后面的 [00:21:13] 你可以发现它其实是based on [00:21:16] 这个这样的markup的精神 [00:21:18] 继续去做 [00:21:19] 但是Chanon其实有很多贡献是在于 [00:21:22] 所谓的资讯理论 [00:21:24] 那当然它的意思 [00:21:27] 跟我们后面会讲所谓的语言的困惑 [00:21:36] 或者是语言的对应的几率 [00:21:38] 生成的分布是有一定的道理的 [00:21:42] 那他的想法是说 [00:21:45] 当我的语言 [00:21:47] 我要去产生一个更稀少的字的时候 [00:21:51] 就是比如说 [00:21:52] 我写出这个字字 [00:21:54] 大家不太会用的 [00:21:56] 这几乎是我很爱用 [00:21:58] 但是其他一般人来讲 [00:22:01] 都不会用到这个字的时候 [00:22:03] 我这个句子所带有的资讯量是很高的 [00:22:09] 所谓资讯量很高 [00:22:10] 你可以想象 [00:22:12] 你白话一点来讲 [00:22:14] 你常常听到一个人讲一堆东西 [00:22:16] 但是好像没有什么重点 [00:22:19] 听的跟没有听一样这样子 [00:22:21] 那个就是资讯量很低的意思 [00:22:23] 那所谓资讯量很高 [00:22:25] 就是说你听到那个关键字 [00:22:27] 你听到一个什么东西 [00:22:28] 就知道他想讲什么 [00:22:30] 那表示那个字所带来的information [00:22:33] 是很unique [00:22:35] 很独一无二的 [00:22:36] 这是白话的说法 [00:22:38] 但是他可以用计算的方式来度量说 [00:22:41] 整个东西的information [00:22:43] 整个句子的information [00:22:45] 或者是整个event的information [00:22:47] 我可以用这种方式来度量它的能量 [00:22:50] 用entropy代表能量 [00:22:52] 来看说它的含义 [00:22:57] 所以用这样的角度 [00:22:59] 我们可以量化一些东西 [00:23:01] 跟我们之后在算 [00:23:03] 甚至在算publicity的时候 [00:23:05] 其实都有点关系 [00:23:07] 这是两个在language model非常重要的问题 [00:23:11] 这是我一个这样的学者 [00:23:13] 当然不止 [00:23:14] 当然是不止 [00:23:15] 所以只是说他们因为也比较有名 [00:23:18] 所以就把它放在这里 [00:23:20] 那这个东西其实 [00:23:22] 刚才讲那么多的过程 [00:23:24] 大家也想象说 [00:23:25] 其实好像得到一个结论 [00:23:28] 就是我现在的字 [00:23:32] 猫狗都会跳 [00:23:34] 会吃会咬这样 [00:23:35] 但是卡车不会 [00:23:37] 卡车不会吃 [00:23:39] 也不会咬 [00:23:40] 所以 [00:23:41] 这些字的关系 [00:23:42] 共同出现的这种关系 [00:23:44] 其实是有一些现象可循 [00:23:49] 然后相似的字 [00:23:51] 他们其实理论上 [00:23:53] 我可以用这种方式来表示说 [00:23:55] 他们的表示应该一样 [00:23:57] 但这个representation [00:23:59] 其实可能有点抽象 [00:24:01] 但是你可以想象 [00:24:02] 它有点像你在机器学习 [00:24:04] 做的东西的feature vector [00:24:06] 比如说我要去定义 [00:24:09] 我要去算班上同学的学习 [00:24:11] 表现的时候 [00:24:12] 我会拉出一个feature vector [00:24:14] 说我要用什么样数据来描述 [00:24:17] 一个学生的好坏 [00:24:21] 可能是他的出席率 [00:24:23] 或者是他的作业的分数 [00:24:26] 或者是说他可能 [00:24:28] 比如说每天来教室 [00:24:31] 坐的第几排的位置 [00:24:33] 或是家里住哪里什么 [00:24:35] 我就拉出一个feature vector [00:24:37] 然后这些feature vector [00:24:38] 我就可以用一些训练的方式 [00:24:40] 来说原来这个出席率 [00:24:42] 其实跟他的学习表现 [00:24:44] 会有一个正比的关系 [00:24:46] 这个feature vector [00:24:47] 你在做机器学习的时候 [00:24:49] 你比较觉得这好像是一个很trivial的东西 [00:24:52] 但是其实它其实就是 [00:24:54] 这个feature vector [00:24:55] 其实就是这一笔资料的一种representation [00:24:58] 就是我用这样的资料 [00:25:00] 量化资料来描述这一个case [00:25:03] 这一个instance [00:25:04] 我们现在要做的就是说 [00:25:06] 我希望能够有一个feature vector [00:25:08] 来描述所有的 [00:25:10] 文字所有的token [00:25:12] 所以我们都会用所谓的representation [00:25:16] 来讲这件事情 [00:25:18] ok [00:25:19] 那当然我们也希望 [00:25:21] 这个这样的vector [00:25:25] 我可以透过计算 [00:25:27] 把别的方式去呈现 [00:25:29] 然后我们也希望 [00:25:30] 他这样的转换的过程 [00:25:32] 是一个smooth [00:25:34] 所谓smooth的意思是说 [00:25:36] 如果猫长这样 [00:25:38] 那我如果有一个token [00:25:40] 叫做小猫 [00:25:41] 叫大猫 [00:25:42] 那它的表示是不是要跟猫也很接近 [00:25:47] 是不是可以透过一个转换的 [00:25:49] 透过变成是一个很平滑的这样的过程 [00:25:53] 这是目标 [00:25:54] 但是当你做完第一个assignment之后 [00:25:57] 你就发现好像不是这么一回事 [00:26:00] 就是这个向量猫的旁边的向量字 [00:26:04] 都不是猫这样子 [00:26:05] 都不知道是什么东西 [00:26:07] ok [00:26:08] 那所以 [00:26:10] 如果当你可以把这件事情 [00:26:13] 做得越smooth的时候 [00:26:15] 让这些量化资料 [00:26:17] 给电脑 [00:26:19] 它越能够知道这些词之间的关系 [00:26:22] ok [00:26:24] 那不过我们现在能做的就是 [00:26:26] 好吧 [00:26:27] 那我们就拿人类的语料 [00:26:28] 给让他知道说 [00:26:29] 这些字啊 [00:26:30] 都在猫狗啊 [00:26:32] 常常出现的字是什么 [00:26:33] 你可以根据这些关系 [00:26:35] 然后去去算出 [00:26:37] 这个所谓的向量表示 [00:26:39] 就是这个训练资料的东西 [00:26:41] 其实是会影响到这个representation的东西 [00:26:48] 接下来投影片呢 [00:26:49] 我是有些是用这个 [00:26:51] 当初做VoltoVector [00:26:54] 或是GrowVector的一些图吧 [00:26:56] 那这个其实一进来这个 [00:26:59] 你可能会有点跳 [00:27:00] 就是说好吧 [00:27:01] 如果我们现在已经有一些方法 [00:27:03] 可以让你算出字的表示 [00:27:05] 透过一个向量算出字的表示 [00:27:08] 然后这些图呢 [00:27:09] 就是把这些向量呢 [00:27:11] 映射在一个可视化的空间 [00:27:15] 这个现在大家应该都有会 [00:27:17] 看用线性非线性的方式 [00:27:19] 把它map在这个2D的空间中去比对 [00:27:23] 这些字呢 [00:27:25] 你可以看到 [00:27:26] 就是说 [00:27:27] 不同的图 [00:27:28] 其实是当中paper举的例子 [00:27:31] 就是这个paper [00:27:32] 其实当初出来之后 [00:27:33] 大家做annualpattern [00:27:35] 其实下巴都有点掉下来 [00:27:37] 这样子 [00:27:38] 哇 怎么这么神奇 [00:27:40] 大家会觉得很神奇这样子 [00:27:42] 就是映射出来之后呢 [00:27:44] 这是每一个字所对应到的Vector [00:27:51] 所对应到的Vector [00:27:53] 那其实你会发现 [00:27:56] 我们看的并不是 [00:27:58] 字的向量的 [00:28:00] 绝对的向量的东西 [00:28:02] 而是一种对比的关系 [00:28:05] 像它这边图 [00:28:06] 常常都有些虚线 [00:28:07] 这些虚线的意思就是说 [00:28:09] 它把这样一个Touple的关系做出来 [00:28:13] 那比如说 [00:28:16] 最常讲的例子就是这个 [00:28:18] 这个man跟woman [00:28:20] 它的关系是这样 [00:28:22] 然后另外一个Vector [00:28:24] King跟Queen在这里 [00:28:26] 那你会发现 [00:28:27] 它们之间Touple的relation [00:28:29] 这个relation [00:28:31] 其实是很一致的 [00:28:33] 这个说 [00:28:34] 老师你这讲的很牵强 [00:28:36] 我认为是怎样一致的 [00:28:38] 至少方向斜率有点强 [00:28:41] 然后呢 [00:28:42] 我可以把这样的Touple的关系 [00:28:44] 也可以对应到 [00:28:45] 其他的这样的一个Pair [00:28:48] 这样的一个Pair [00:28:50] 那你会发现这样的Pair对照起来 [00:28:52] 它好像都是 [00:28:54] 男性跟女性之间的一种 [00:28:56] 对应的关系 [00:28:59] 所以这个就是一个对比关系 [00:29:02] 所以如果我可以用计算方式 [00:29:06] 呈现出这些字的表示 [00:29:09] 然后可以让它呈现出这样关系的时候 [00:29:12] 电脑就可以靠着这些计算这些东西 [00:29:14] 就可以知道说 [00:29:16] 原来这个man跟woman [00:29:18] 其实同等于Queen跟King [00:29:20] 这样的一个关系 [00:29:22] 但是如果你做出来的向量 [00:29:24] 你的Queen在这里 [00:29:26] King在这里 [00:29:27] 那可能就是不太对的东西 [00:29:29] 或者是说 [00:29:30] 它其实是一个 [00:29:31] King在这里 Queen在这里 [00:29:34] 那意义就不对了 [00:29:36] 然后呈现出这样的一个图出来 [00:29:39] 为什么当初做NLP的人下巴都掉了 [00:29:42] 就是说这实在太厉害了 [00:29:44] 就是我可以靠着计算 [00:29:46] 没有任何的supervised的Data [00:29:48] 完全靠它做Unsupervised的方式的训练 [00:29:51] 可以学会这些向量的表示 [00:29:54] 呈现出这样的relation [00:29:56] 这个非常神奇 [00:29:59] 那我前面一直在问的就是说 [00:30:02] 那这个是相对的关系 [00:30:04] 但是绝对的关系是 [00:30:06] 这样的Vector的表示 [00:30:08] 比如说 [00:30:09] 这个比如说好 [00:30:10] 国王 [00:30:11] 这个King这个字 [00:30:12] 它附近的向量是不是都跟King有关 [00:30:15] 其实不尽然 [00:30:16] 其实不尽然 [00:30:18] 所以有时候比如说 [00:30:20] 你用这个wall embedding [00:30:22] 去apply在做大圆模型 [00:30:25] 用reg [00:30:26] 然后去算这个token [00:30:28] 然后算相似度 [00:30:29] 然后你想找King [00:30:31] 但是你就会发现你找到King [00:30:33] 都是这个King旁边的字 [00:30:35] 这些字可能都跟King一点关系都没有 [00:30:38] 这样子 [00:30:39] 不过这个当然我们在做reg比对的时候 [00:30:43] 不会用这么简单的dense vector在做 [00:30:46] 好 [00:30:47] 这是一个例子 [00:30:48] 所以这样就是一个对比的过程 [00:30:50] 所以你可以看到这个 [00:30:51] 我可以直接在Vector上 [00:30:53] 直接做operation [00:30:55] 直接做量化的运算 [00:30:57] 我就可以推出是什么 [00:30:59] 所谓推出就是说 [00:31:01] 当我告诉你这个这样的关系的时候 [00:31:04] 我给你这个King [00:31:06] 你告诉我一个什么字 [00:31:08] 然后电脑转一转发现 [00:31:10] 嗯 [00:31:11] Queen这样子 [00:31:12] 这个就是在你们assignment1要做的事情 [00:31:16] 但是你可能会发现 [00:31:18] 你的Queen [00:31:19] 并不会在这个数字的附近的第一个选项 [00:31:24] 也许他可能在前三名的 [00:31:26] 或是什么 [00:31:27] 所以这个你可以去探讨这样子 [00:31:30] 好 [00:31:32] 另外还有一些关系 [00:31:33] 大家可以看一下 [00:31:34] 或是你自己从这个paper [00:31:35] 他其实有相相当多的这种anology的图 [00:31:39] 他比如说 [00:31:41] 这个是 [00:31:44] 公司名称跟CEO [00:31:47] 我记得是人名 [00:31:49] 就是这个公司跟人名之间的relation [00:31:53] 然后还有这种 [00:31:54] 比较语法上的 [00:31:56] 就是原型比较级最高级之间的关系 [00:32:01] 其实当然你会觉得 [00:32:02] 哎 [00:32:03] 还是不是这么exactly是一样的pattern [00:32:05] 但是趋势非常的close [00:32:08] 这个已经相当厉害了 [00:32:10] 就是以现在的角度来看 [00:32:12] 用这么粗略的计算就可以这样 [00:32:15] 已经非常厉害了 [00:32:18] 那这个我记得是GrowVac的图 [00:32:21] 就是说他可以算这种特别的 [00:32:24] 这其实你可能平常也不知道那是什么字的 [00:32:26] 但是他就是 [00:32:28] 靠着统计上 [00:32:30] 他可以算出这几个字的vector很接近 [00:32:33] 好 [00:32:35] 所以 [00:32:37] 我们希望我们有一个机制 [00:32:39] 可以靠着 [00:32:41] On Supervise的方式去训练 [00:32:44] 让电脑学会这些东西 [00:32:47] 我们今天不要管怎么学 [00:32:48] 但是你想想看 [00:32:49] 当我学会这些东西的时候 [00:32:51] 电脑厉害了 [00:32:53] 当我要搜寻什么东西的时候 [00:32:55] 他可以自动帮我语意延伸 [00:32:57] 这样子 [00:32:59] 但是我觉得现在你们可能会觉得说 [00:33:02] 老师这有什么了不起 [00:33:04] 大圆模型都会 [00:33:05] 干嘛看这些东西 [00:33:08] 其实现在会有一些问题 [00:33:10] 其实也是现在教育界常常在困扰的一个问题 [00:33:15] 就是说 [00:33:16] 大圆模型GAI都这么厉害 [00:33:18] 我们还要教学生写程式吗 [00:33:21] 当然要教他做这些判断 [00:33:25] 甚至你做研究 [00:33:26] 其实你都可以跟AI共同写 [00:33:29] 共同做了 [00:33:30] 然后 [00:33:31] 其实我不知道作者名字要不要放上 [00:33:33] 或者AI这样子 [00:33:35] 这件事情一直在发生 [00:33:38] 而且发生的case越来越特别 [00:33:42] 但是你可能要思考一下 [00:33:44] 其实 [00:33:45] 我觉得这个会到一个棒 [00:33:47] 就是说人类 [00:33:48] 就是学生完全没有任何的contribution [00:33:53] 就是学生唯一的contribution [00:33:56] 就是下plunk这样子 [00:33:58] 他已经没有任何的knowledge是 [00:34:01] 大圆模型没有的部分 [00:34:04] 这部分这样是有点恐怖 [00:34:06] 这样是有点恐怖 [00:34:07] 因为 [00:34:08] 我觉得到后来会形成一个close的loop [00:34:11] 这样子 [00:34:12] 因为大圆模型 [00:34:13] 你没给他任何的新的想法 [00:34:15] 他就是这样子而已 [00:34:18] 那 [00:34:19] 所以我常会说 [00:34:20] 你应该去看看说 [00:34:23] 这样的问题 [00:34:24] 如果不是用LM [00:34:26] 如果不是用这么大的transformer在做的时候 [00:34:29] 以前人是怎么做的 [00:34:31] 那为什么他要这样做 [00:34:33] 那当时他做遇到什么问题 [00:34:35] 你才能知道说 [00:34:37] OK [00:34:38] 那我能不能用已经pre-trained好的transformer [00:34:42] pre-trained好的language model [00:34:44] 我可以来这边做的更好 [00:34:46] 你才会有这种 [00:34:49] 痛点跟solution之间的mapping [00:34:51] 有了这样的mapping之后 [00:34:53] 你才能自己生出 [00:34:55] 其他的痛点跟solution的mapping [00:34:58] 不然always [00:35:00] 凡事就问AI [00:35:02] 你永远就是 [00:35:03] 虽然你可以到达一定的表现 [00:35:05] 但是你的表现 [00:35:06] 就会停留在那里 [00:35:08] 好 [00:35:09] 这边再举一些例子 [00:35:10] 就是其实也是paper上 [00:35:12] 举的这些analogy的例子 [00:35:14] 就是这个是 [00:35:16] 可能 [00:35:18] 像什么公司的名称 [00:35:21] 首都的名称 [00:35:22] 其实都可以对照出来 [00:35:24] 那另外一点更神奇的就是 [00:35:26] 因为他有做不同语言 [00:35:28] 所以 [00:35:29] 英文的分布 [00:35:31] 这是另外一种语言 [00:35:34] 是西班牙语 [00:35:36] 反正就是另外一种语言的分布 [00:35:38] 然后这是对应的 [00:35:39] 他的translation [00:35:41] 就是 [00:35:43] 同样这些字 [00:35:44] 在另外一种语言的 [00:35:45] 这种relation [00:35:47] 所算出来的这种embedding [00:35:49] 其实分布其实是一样 [00:35:52] 所以为什么我们可以做 [00:35:54] 做这个translation [00:35:55] 就是当我看完英文字典之后 [00:35:57] 我就可以去 [00:35:58] 讲法文的这样子 [00:36:00] anyway就是 [00:36:01] 他的mapping [00:36:03] 因为词的用法 [00:36:04] 不会有太大的改变 [00:36:05] 尤其是 [00:36:06] 同样语系的 [00:36:08] 应该说同样语系的 [00:36:10] 这个可能对应到中文 [00:36:12] 或者是其他的不同 [00:36:14] 可能分布会有点不太一样 [00:36:16] 这样子 [00:36:18] 好 [00:36:19] 所以这件事情我们当然是 [00:36:22] 能够做到这样 [00:36:23] 其实是我们的目标 [00:36:24] 但的确在 [00:36:25] 在那个年份 [00:36:26] 其实就一大堆人在做 [00:36:28] 然后一直做到一个 [00:36:29] 非常pratical的 [00:36:30] waterbath出来之后 [00:36:31] 有grow back [00:36:32] 有fast text之后 [00:36:33] 大家就觉得这一块 [00:36:35] 就底定是这个样子 [00:36:38] 但前期他其实有很多的想法 [00:36:40] 就是说 [00:36:41] 为什么可以这样做 [00:36:44] 我要用什么方式训练 [00:36:46] 然后我的训练资料在哪里 [00:36:48] 什么什么 [00:36:49] 这些东西都用 [00:36:51] 以前有很多语言学的想法 [00:36:54] 在做这件事情 [00:36:56] 这句话其实是 [00:36:58] 可能大家也都知道 [00:36:59] 但是他更早的一个 [00:37:02] 其实点或是他的citation [00:37:05] 应该是来自于这个 [00:37:07] 语言学家讲的这个东西 [00:37:09] 就是一个字 [00:37:11] 是跟随着 [00:37:12] 是用他周边的字 [00:37:15] 所表现出来 [00:37:16] 就这个字的意思 [00:37:17] 你不知道 [00:37:19] 就是有点像 [00:37:20] 你去读一个英文句子 [00:37:22] 这个字你不知道 [00:37:23] 但是你可以看出 [00:37:24] 前后文在讲 [00:37:25] 这个字大概是什么意思 [00:37:27] 你大概就猜出来这样子 [00:37:29] 也就是说 [00:37:30] 如果这两个字 [00:37:31] keg跟dog [00:37:32] 他的周边的字 [00:37:33] 几乎都一样 [00:37:34] 在我众多语料里面 [00:37:36] 他们旁边发生的字都一样 [00:37:38] 你大概可以猜出 [00:37:39] 他们两个字的概念是一样 [00:37:41] 你不会看到一个文章在描述 [00:37:44] 卡车舔他的猫 [00:37:46] 这样子 [00:37:47] 所以就用这样的想法 [00:37:49] 我们就 [00:37:50] 那我就知道说 [00:37:51] 我利用这种co-occurrence probability的关系 [00:37:55] 我就可以去 [00:37:57] 能不能让电脑去学会一个表示 [00:38:00] 这个表示刚好可以hit到 [00:38:02] 这个co-occurrence probability [00:38:04] 所以这个精神 [00:38:06] 就是这样延伸出来的 [00:38:09] 那在讲what-to-vector之前 [00:38:12] 我们来看一下 [00:38:13] 以前我们在做NLP的想法是什么 [00:38:16] 这件事情其实 [00:38:18] 虽然你说 [00:38:19] 老师现在也不会用LSI [00:38:21] 这个 [00:38:22] 虽然听起来很炫的技术 [00:38:25] 但是他不pratical [00:38:26] 也不好用 [00:38:27] 也不好算 [00:38:28] 然后算出来也不是那么准 [00:38:30] 但是你要想想看 [00:38:31] 以前在做这块的时候 [00:38:33] 其实这个技术是非常炫 [00:38:35] 就是很厉害 [00:38:37] 我可以靠着语料的读取 [00:38:40] 我不用做监督室学习的资料 [00:38:43] 我就可以Chain这种猫跟狗的关系 [00:38:46] 我就可以Chain出来 [00:38:47] 而不是靠大型的类神经网络去做 [00:38:51] OK [00:38:52] 那精神上也是这样 [00:38:54] 就是说我的字 [00:38:56] 我用意识的字 [00:38:57] 它旁边的这个textual context [00:39:01] 或是所谓的co-occurrence的东西 [00:39:04] 其实是很接近 [00:39:06] 其实是很接近的 [00:39:08] 那我们用这个例子 [00:39:12] 这个例子其实是Stanford课的例子 [00:39:15] 然后其实是可以用 [00:39:18] 这一个LSI算出来 [00:39:21] 不过我们资料没有很多 [00:39:25] 但是你其实是可以算 [00:39:26] 我只是把这个例子来做这样的解释 [00:39:29] 就比如说我现在的Corpus有三句 [00:39:33] 三句 [00:39:34] 就是这个 [00:39:36] 这个故意做的这个 [00:39:37] 有一些重复字这样子 [00:39:40] 然后like后面有不同的like这样子 [00:39:44] 所以我们就做所谓的co-occurrence [00:39:46] 就是说这个字 [00:39:47] 后面跟随了哪个字这样子 [00:39:50] 就是它们两两之间有在一起 [00:39:52] 就把它Comp的加一这样子 [00:39:54] 所以像这边 [00:39:56] i后面接like这边出现两次 [00:39:59] 所以就是2这样子 [00:40:01] 这是一个对称的 [00:40:03] 所以要找这样 [00:40:04] 所以我可以做一个这样co-occurrence的matrix [00:40:08] 那这个co-occurrence matrix [00:40:09] 跟我们之后等一下有个例子 [00:40:11] 我们用的matrix其实不太一样 [00:40:14] 我们那边用的是一个TT matrix [00:40:16] 就是文章中出现哪些字的一个matrix [00:40:20] 但是精神上是一样的 [00:40:22] 就是我就用这样的一个matrix做 [00:40:26] SVD [00:40:27] 那SVD我并没有讲SVD [00:40:29] 但是我们等一下会 [00:40:30] 另外的例子会讲得更细一点 [00:40:32] 怎么做这件事情 [00:40:33] 我就想要有一个process [00:40:35] 做矩阵的一个拆解 [00:40:37] 这个拆解完之后 [00:40:39] 我可以再取出重要的这些几个dimension出来 [00:40:43] 然后再做再把它反制回去这样子 [00:40:47] 然后反制回去之后 [00:40:49] 我就可以得到每一个字的向量 [00:40:52] 每一个字的向量 [00:40:54] 然后把这个字的向量 [00:40:55] 再把它映射在这个二维空间上 [00:40:58] 我就发现说 [00:40:59] 这个annual p跟deep [00:41:02] 我圈起来意思就是比较 [00:41:04] 因为只有三句 [00:41:05] 只有三句其实很难去讲什么统计 [00:41:07] 但是用这种方式做下来的这个annual p跟deep [00:41:13] 因为它都跟随在like的后面 [00:41:17] annual p在like的后面 [00:41:19] deep在like的后面 [00:41:21] 所以用这种方式 [00:41:22] 它可以学会这样的表示 [00:41:25] 就是很接近 [00:41:26] 所以以前这个 [00:41:29] 这个还没有使用 [00:41:32] 还没有用到这个 [00:41:34] 这个枪的时候 [00:41:36] 这个是没有 [00:41:42] 有带电池吗 [00:41:53] 就是在你还没有用nn在做的时候 [00:41:56] 其实你就有办法 [00:41:58] 靠着这样的矩阵的学的方式 [00:42:01] 计算的方式 [00:42:03] 你就可以做出这样字之间的关系 [00:42:06] 所以 [00:42:09] 谢谢 [00:42:10] 希望不会有问题 [00:42:20] 好 [00:42:22] 好 [00:42:23] 这就是LSI它能够做出的效果 [00:42:26] 好 [00:42:27] 好 [00:42:28] 没关系 [00:42:31] 为什么干扰 [00:42:32] 这个是电 [00:42:50] 这个是电 [00:42:51] 这个是电 [00:42:53] 这个是电 [00:42:54] 这个是电 [00:42:55] 这个是电 [00:42:56] 这个是电 [00:42:59] 这个是电 [00:43:00] 这个是电 [00:43:14] 这个是电 [00:43:15] 这个是电 [00:43:16] 这个是电 [00:43:17] 这个是电 [00:43:18] 这个是电 [00:43:19] 这个是电 [00:43:20] 这个是电 [00:43:21] 这个是电 [00:43:22] 这个是电 [00:43:23] 这个是电 [00:43:24] 这是火 [00:43:26] 这个是电 [00:43:27] 这里是电 [00:43:28] 这里是电 [00:43:29] 所以这下面它会,"火えば方ою [00:43:49] 因为有一词多义 [00:43:51] 没有出现也不见得是无关 [00:43:53] 因为本来就是一个意识 [00:43:54] 可以用很多种的方式来表示 [00:43:57] 所以这件事情我们来看一下 [00:44:02] 以前是怎么做的 [00:44:03] 你大概可以知道一下 [00:44:04] 就是参观一下博物馆 [00:44:07] 说以前这些古人用的这样的技术 [00:44:10] 到底长什么样子 [00:44:11] 其实里面就有一个SVD [00:44:13] 那SVD其实不是这边才有的东西 [00:44:16] 这个你们在学线性代数就学过 [00:44:18] 所谓矩阵的拆解 [00:44:20] 它可以拆解出现在你整个空间里面 [00:44:26] 一些重要的代面序的表示 [00:44:28] 就是把它的 [00:44:29] 做出它的对角矩阵这样子 [00:44:34] 所以anyway [00:44:39] 我没有要讲SVD [00:44:41] 反正就是你有一个拆解 [00:44:42] 一个矩阵的方式 [00:44:43] 它可以用这样的方式 [00:44:45] 拆解出一个对角矩阵 [00:44:48] 然后我们从那个对角矩阵 [00:44:49] 取出 [00:44:50] 所谓的这个principle的一些dimension [00:44:54] 然后再把它反制回去 [00:44:56] 它的效果就看得出来 [00:44:58] 我们先用一个例子 [00:45:00] 这个例子叫有十篇文章 [00:45:02] 这十篇文章里面 [00:45:04] 前五篇文章讲的是LinuxOS的东西 [00:45:08] 然后后面是讲所谓的GNOME [00:45:11] 这些跟LinuxOS一点关系都没有的东西 [00:45:15] 所以你可以想像是这个两组不同的文章 [00:45:20] 但是因为会用到一些common的word [00:45:22] 好像这边LinuxOS有所谓MySQL Database [00:45:26] 但是我们在讲这个GNOME的时候 [00:45:29] 也有所谓GNOME Database [00:45:32] 为什么要特别这样讲 [00:45:33] 就是说 [00:45:35] 这个我们前面一直在讲所谓的co-occurrence [00:45:38] 那这个Open Source跟Database共同出现 [00:45:40] 那表示Open Source跟Database这两个字 [00:45:43] 其实有一定的关系 [00:45:44] 我们才会一起讲 [00:45:46] 那这个Linux Software [00:45:48] 然后Release这些东西 [00:45:50] 它一起出现 [00:45:51] 它的关系就会出来 [00:45:54] 然后这边因为基因体的资料库 [00:45:57] 叫GNOME Database [00:45:58] 但是GNOME又会跟什么Dory [00:46:01] 多利养这些东西又会有关系 [00:46:04] 所以我们是不是这个Database [00:46:07] 就会串接基因体的一些字 [00:46:10] 然后也会串接LinuxOS的一些字 [00:46:13] 那我们是不是可以把这些关系拉近这样子 [00:46:17] OK [00:46:18] 那我们来看一下 [00:46:20] 这十篇文章 [00:46:21] 如果我们做一个叫做TD Matrix [00:46:24] 就是所谓的Term [00:46:27] 就是我认为的关键字 [00:46:29] 跟我的Document [00:46:31] 十篇Document [00:46:32] 有出现这个字就比较关号这样子 [00:46:35] 有点像说我现在就是用这几个字来描述所有的文章 [00:46:39] 我就可以做出十篇文章的Vector [00:46:42] 那这样的一个Matrix [00:46:45] 我们用刚才的SVD的方式 [00:46:49] 不过我们先看一下 [00:46:49] 这个矩阵 [00:46:50] 因为就两组不同讲不同的东西 [00:46:54] 那所以你发现前五篇都在讲Open Source [00:46:57] 所以这边都是0 [00:46:58] 那后五篇讲Geno [00:47:00] 所以他前面这些Linux的字也都是0 [00:47:03] 所以表示说 [00:47:05] 当我要搜寻这个多利养的时候 [00:47:08] 我绝对不会找到前五篇的东西 [00:47:10] 因为关键字都没有出现 [00:47:13] 不然我们就把这样的Vector计算刚才那个过程 [00:47:17] 这有点小 [00:47:19] 那这个过程是什么呢 [00:47:20] 再回到头 [00:47:21] 这个 [00:47:23] 这个 [00:47:24] 就当我们做出这样的矩阵之后 [00:47:26] 那每一个每一个Document的Vector [00:47:30] 或者是你横的看 [00:47:31] 就是每一个字他的表示的方式 [00:47:34] 我们把这样的一个Matrix做拆解成 [00:47:39] 用SVD拆解成这个三个向量 [00:47:42] 中间这一个是Single-Variant Matrix [00:47:45] 其实是一个对角矩阵 [00:47:47] 这个我想SVD应该 [00:47:49] 大家都都都知道 [00:47:52] 那anyway就是我有一个方式可以做一个这样拆解 [00:47:56] 但是我们先不管后面这么多 [00:47:59] 你可以想想看 [00:48:00] 以前你在学线性代数在算SVD的时候 [00:48:03] 有一些方法 [00:48:05] 然后也可以用 [00:48:06] 其实SVD是一个蛮有用的技术 [00:48:09] 甚至在推荐系统什么都有用 [00:48:12] 也可以用训练的方式 [00:48:14] 可以用逼近的方式做这些东西 [00:48:17] 好不管怎么做 [00:48:18] 他其实运算复杂度挺高的 [00:48:22] 所以后面才会用逼近的方式在做 [00:48:25] 那假设假设没有这些我们要exactly对的东西 [00:48:29] 那我们就是运算SVD运算 [00:48:32] 所以这个你可以想像这个一万个维度跟一万个维度矩阵要做SVD [00:48:36] 他的成本有多少 [00:48:38] 做出来之后呢 [00:48:40] 我们把中间这个对角矩阵呢 [00:48:42] 去取所谓的Largest K [00:48:45] 就是从从第一个到到 [00:48:48] N个当我们只举前K个把它留下来 [00:48:53] 比如说那个对角只只有前K个留下来 [00:48:56] 后面都是0 [00:48:58] 就做出一个新的中间对角矩阵 [00:49:01] 然后再把它乘回去 [00:49:03] 他乘回去就会得到一个新的TT Matrix [00:49:06] 然后你就会发现 [00:49:08] 不太一样 [00:49:11] 这个这个就是做出来的对角矩阵 [00:49:14] 那我们只留前两个后面变成0 [00:49:17] 然后再把这一个矩阵呢 [00:49:18] 乘回去刚才 [00:49:20] SVD拆解出来的那个前后的矩阵再乘回去 [00:49:24] 我就可以得到一个新的TT Matrix [00:49:28] 他这个新的TT Matrix [00:49:29] 你可以发现有一些不一样的地方 [00:49:31] 那我们刚才有highlight说这边都是0 [00:49:34] 这边都是0 [00:49:36] 但是他这边有一点值出现 [00:49:39] 或者是他有一点负的值出现 [00:49:41] 比如说他他可以拉开这个关系 [00:49:44] 或者说把一些关系呢 [00:49:45] 靠着Database这个字 [00:49:47] 把它拉进来这样子哦 [00:49:50] 就有一些有提到Database [00:49:52] 跨LinuxOS跟Juneau的的的新闻 [00:49:56] 所以靠的是中间这个字 [00:49:58] 你可以很多地方啊 [00:50:00] 你都可以trace说 [00:50:01] 其实有点影响 [00:50:02] 我就靠这个Database去propagate这个concept出去了 [00:50:07] 那这样意思是说 [00:50:08] 以后搜寻引擎在搜寻这个关键字的时候 [00:50:13] 某一篇文章 [00:50:14] 他就不再是一个1号的表示 [00:50:17] 他有一些字 [00:50:18] 但是诶 [00:50:19] 可能本来是0的现在变负的 [00:50:21] 就是我可以把他他的概念拉的更开一点 [00:50:24] 但是有些关系呢 [00:50:26] 像这个D5这一篇呢 [00:50:28] 他其实 [00:50:29] 额 [00:50:30] 这个 [00:50:32] 这边的概念就出现了 [00:50:33] 他是一个LinuxOS的句子 [00:50:36] 但是呢 [00:50:37] 他这个他就跟多力一样有点关系 [00:50:40] 虽然你会觉得说老师这样会不会是有问题 [00:50:43] 当然这个case看起来是有点怪 [00:50:46] 但是如果你的语料更多一点 [00:50:48] 你的关联co-occurrence更复杂一点的时候 [00:50:52] 你就发现这个LSI做出来的东西其实还不错 [00:50:56] 还不错 [00:50:57] 就是在那个年代 [00:50:59] 在没有这种大模型的年代的时候 [00:51:02] 诶这个技巧其实是非常神乎其技的 [00:51:06] 就是靠着计算 [00:51:08] 我就可以算出字跟字之间的relation [00:51:11] 或是document之间的概念如何延伸 [00:51:16] OK [00:51:20] 那这个方法 [00:51:21] 其实就叫LSA [00:51:24] 就是隐含的语义分析 [00:51:27] 你可以这样直译 [00:51:29] 隐含语义分析呢 [00:51:30] 在通常后面都会用在这个做retrieval [00:51:35] 做index [00:51:35] 所以这样的一个技术 [00:51:37] 我们叫LSI这样子 [00:51:39] 就是这样告诉你说 [00:51:40] 以前其实在这些NN没有出来的时候 [00:51:44] 这些这些word2vector还没出来之前 [00:51:47] 我们怎么去拉近猫跟狗的关系 [00:51:50] 其实也是可以靠着贡献性 [00:51:51] 靠着计算去得到这样的relation [00:51:54] 这是一个以前做的这样的东西 [00:51:58] 但是你可以试着去去看 [00:52:00] 想象他的问题 [00:52:02] 因为他最大问题是在拆解那个SVD [00:52:05] 那SVD的运算复杂度是相当的高 [00:52:09] 其实你现在就vibe coding [00:52:11] 或是你直接呼叫python的SVD这样直接做 [00:52:15] 你就发现做一个十万维 [00:52:17] 十万维的电脑就卡在那就做不出来这样子 [00:52:21] 那你可以想象当我们在做一个大的语料库的时候 [00:52:26] 我不太可能这样做 [00:52:27] 因为那个根本拆不出来 [00:52:30] 虽然他有一些逼近的方法 [00:52:32] 成本还是相当的高 [00:52:34] 而且他会有个问题 [00:52:36] 他没办法incremental去update [00:52:38] 就是当我多了 [00:52:41] 这个十万篇文章做完之后 [00:52:44] 当我有一篇新的语料 [00:52:46] 我新的语料可能是讲不同domain的 [00:52:48] 以前都没看过的 [00:52:49] 我要放进去 [00:52:50] 我要重做 [00:52:51] 我没办法incremental去做 [00:52:53] 他这个就必须整个core-grants-metrics-update之后 [00:52:56] 再整个重算 [00:52:59] 所以其实有时候一篇paper出来之后 [00:53:02] 后面就会有人去做他的 [00:53:04] 所谓这个我怎么去update [00:53:07] 怎么去做incremental的这个增加修剪 [00:53:11] 或是要把一些概念拿掉 [00:53:13] 这种他延伸都会是这个样子 [00:53:16] 但是用SVD来做其实很难做这件事情 [00:53:18] 好 [00:53:20] 所以后面当然 [00:53:22] 那我们就用学的用算的 [00:53:25] 能够算多少就算多少 [00:53:27] 不要叫他硬做这么大的矩阵这样子 [00:53:31] 所以后面就有这种比较probability的想法 [00:53:34] 其实比较像是language的model的想法 [00:53:38] 就出来了这样子 [00:53:40] OK我想我们休息一下好了 [00:53:43] 我先看一下slide [00:53:45] 刚刚好像有个问题 [00:53:47] 我们休息10分钟再回来 [00:53:48] 我们不期待什么东西 [01:02:56] 我们看一下那个slide上有几个问题 [01:03:12] 就是说我想ntu库他当初有一个schedule [01:03:18] 就是什么加选的时间 [01:03:21] 然后他会批次处理这些前一段加选的这样子 [01:03:25] 所以可能应该是近期会收到 [01:03:29] 不过anyway就是如果你下周还没有就再问一下 [01:03:34] 这样子所以可能应该是近期会收到不过anyway就是如果你下周还没有就再问一下 [01:03:34] 这样子因为要开始要写作业 [01:03:38] 有同学问这个BM25这个那个公式 [01:03:42] 那当初那个式子其实是只是并没有要细讲每一个东西 [01:03:51] 只是精神上只是告诉你说 [01:03:54] 他就是一个变形的TFIDF这样子 [01:03:58] 那可能我可以再补充一下上面的一些细节 [01:04:03] 对那不过 [01:04:04] 当初他们做这些东西的概念都是蛮HURIESTIC [01:04:08] 就是经验法则 [01:04:11] 就是这样调一调调一调 [01:04:13] 在这样的计算底下效果不错这样子 [01:04:17] OK [01:04:18] 第二个如何决定Vector要几个维度 [01:04:22] 这个 [01:04:24] 这个你在本来这边问 [01:04:26] 其实以前 [01:04:28] 以前这个Document Vector基本上就是Vocabulary Size [01:04:33] 但是如果你说要 [01:04:34] 决定Vector [01:04:36] 这个是我们等下做Embedding的时候会讲到的 [01:04:41] 当然你会觉得说我是不是Feature越多越好 [01:04:44] 就像我们在做机器学习一样 [01:04:46] 我就开大一点几万维这样去表示一个东西 [01:04:51] 的确多一点的确有好处了 [01:04:54] 但是一般后来在做这边的每一个字的Embedding [01:04:58] 其实都不会太多 [01:05:00] 就是了不起到1K [01:05:02] 但是通常也不会到1K [01:05:04] 这个标准的我记得好像是一个7658还是什么 [01:05:09] 就是大概一个这样的几百个数字的维度 [01:05:13] 就可以来表示所有的这样的概念 [01:05:17] 当然多也有好处 [01:05:19] 只是说多 [01:05:21] 也有做一些实验就是 [01:05:23] 如果你有兴趣 [01:05:24] 可以找一些这样Paper [01:05:25] 但是一般我们在讲我Embedding之后 [01:05:27] 你就发现说到那边 [01:05:29] 其实大家Default做出来 [01:05:31] 大概就是那个700多个维度 [01:05:33] 嗯 [01:05:34] 那复习从World Vector变成Document Vector [01:05:40] 当然我会讲这个差别 [01:05:44] 就是说你发现你用这个World Vector [01:05:46] 都发现它其实还是不对 [01:05:48] 就是做出来的Apple还是那个向量 [01:05:51] 你在讲苹果在讲苹果电脑 [01:05:53] 都还是Apple那个向量 [01:05:55] 所以后面我们才会说 [01:05:57] 所以所谓这种Contactual Vector还是很重要 [01:06:01] 那就是说怎么把这个字 [01:06:04] 在那个句子的意思学出来 [01:06:07] 学完之后 [01:06:07] 我们会想去看整个句子 [01:06:09] 或是整篇文章的向量 [01:06:11] 这个当然就是更后期在讲 [01:06:15] 这个可能到Fur以后 [01:06:17] 才会有这样的比较合理一点 [01:06:21] 比较Practical的技术去做所谓的Document Vector [01:06:25] 大概是这样 [01:06:27] 那这个NTU库上的作业 [01:06:29] 因为当初其实是Mino过来没错 [01:06:31] 但是理论上我们应该是 [01:06:33] 呃还没有Open了 [01:06:34] 但是第一个Assignment应该是看得到的 [01:06:38] 那我们今天会把一些资讯都把它全部Update一下 [01:06:44] 那可能到时候大家再上去看一下 [01:06:47] 好 [01:06:49] 那我们就回到课程部分 [01:06:56] 在讲这个之前 [01:06:58] 可能你会觉得怎么跳到这个机率 [01:07:00] 这个其实会有点关系 [01:07:02] 就是 [01:07:04] 刚好昨天去开会 [01:07:08] 刚遇到中山大学老师 [01:07:10] 他说我们学校的猴子呢 [01:07:12] 都比研究生还勤劳这样子 [01:07:14] 就是这个早上七八点就会来办公室报到这样子 [01:07:19] 然后傍晚也会来一次这样子 [01:07:22] 对他们现在真的泛滥 [01:07:24] 就是几乎就是大家可能看过网络上那个影片 [01:07:28] 他们说那是真的 [01:07:29] 没错 [01:07:30] 那个有遇过这样子 [01:07:33] 嗯 [01:07:33] 嗯 [01:07:33] 嗯 [01:07:34] 嗯 [01:07:34] 嗯 [01:07:34] ,那为什么要讲猴子这件事情 [01:07:36] 那在讲这个语料的时候 [01:07:39] 其实大家都会有一个有一个说法叫做无限猴 [01:07:45] 不是无限乘 [01:07:46] 就是无限猴 [01:07:47] 就是你你叫你有一大堆的猴子 [01:07:51] 然后给他们一台电脑 [01:07:53] 就叫他们在键盘上打一堆字 [01:07:56] 这样子 [01:07:57] 因为你有很多只猴子 [01:07:58] 这样子 [01:07:59] 其中一定可以有一只猴子 [01:08:02] 可以打出这个莎士比亚的 [01:08:04] 文章这样子 [01:08:05] 哦 [01:08:06] 依照几率的观点来看是合理 [01:08:09] 哦 [01:08:09] 因为莎士比亚的巨子 [01:08:11] 哦 [01:08:12] 这个字跟着这个字 [01:08:13] 然后虽然很长吗 [01:08:15] 一篇文章很长 [01:08:16] 但是那个Property是算了出来的 [01:08:18] 那Property算出来之后呢 [01:08:20] 你只要把期望值变成1 [01:08:23] 就会雇用这么多只猴子去打这样子 [01:08:26] 哦 [01:08:26] 哎 [01:08:26] 就有一只这个可以变成莎士比亚这样子 [01:08:30] 哦 [01:08:31] 这这其实大家也是告诉你说人类的文章 [01:08:34] 这样的字的分布 [01:08:36] 哎 [01:08:36] 他有一定的几率的算法是 [01:08:39] 哎 [01:08:39] 哦 [01:08:40] 来这个莎士比亚的字 [01:08:42] 到这边就会讲什么 [01:08:43] 这样子 [01:08:44] 哦 [01:08:44] 所以他是有一个pattern [01:08:46] 有一个几率的 [01:08:47] 哦 [01:08:48] 所以如果我们可以学会 [01:08:52] 让电脑学会说啊 [01:08:53] 你看到这几个字 [01:08:54] 下一个字应该是什么 [01:08:56] 以人类的nudge来看 [01:08:58] 他应该是什么字的时候 [01:09:00] 哎 [01:09:00] 这样的表示是不是有一点用来呈现 [01:09:04] 这个语言 [01:09:05] 或是每个字的概念的这样的一个量化的呈现 [01:09:10] 哦 [01:09:10] 所以这个这个年代大家就希望说 [01:09:13] 哎 [01:09:14] 那 [01:09:15] 那我把这个计算的公式写好之后 [01:09:18] 我就让电脑去根据人类的文章去学一学 [01:09:24] 哦 [01:09:24] 学完之后 [01:09:25] 他是不是就可以算出哦 [01:09:27] 这个字应该要表示这样在几率的计算的时候 [01:09:31] 才会是什么 [01:09:32] 哦 [01:09:32] 才会符合人类的文章的方式啊 [01:09:34] 这样的分布哦 [01:09:35] 所以那个年代一堆人在做这件事情哦 [01:09:40] 不过这个这个probability的想法有很多层面 [01:09:44] 或是很多的细致度 [01:09:46] 那我们来看一下所谓的呃 [01:09:49] 我可以非常单纯的啊 [01:09:51] 这个unary language model [01:09:53] 就是字跟字之间是完全独立的啊 [01:09:56] 就是我看到一个句子哎 [01:09:58] 他其实他这个句子发生的几率就是每个字发生的几率相乘哦 [01:10:02] 那依照几率来看就是 [01:10:04] 字跟字之间是是完全独立的事件哦 [01:10:07] 但其实这样文字不是哦 [01:10:10] 至少会长这样哦 [01:10:11] binary language model [01:10:12] 这个其实已经也非常的阳春了 [01:10:15] 就是我下一个字只跟前一个字有关哦 [01:10:19] 我会再看多一点的字这样子哦 [01:10:22] 所以我一句一句话出来 [01:10:23] 我要算这句话 [01:10:25] 他到底在人类的语言史上发生的几率 [01:10:29] 我就去算所有人类的文字中 [01:10:33] 这个字 [01:10:34] 后面会跟着这个字的property我算出来 [01:10:37] 然后就把这个property乘出来这样子哦 [01:10:41] 那这个是binary [01:10:42] 那你可以想象说哎 [01:10:44] 我如果这个更长一点 [01:10:47] 我tri-gram或是4-gram或是更长或是做到n-gram [01:10:50] 那是不是就好像很complete去计算这件事情 [01:10:55] OK所以我们之后再算所谓的propensity [01:10:58] 其实精神上也是这样 [01:11:00] 我觉得我看到这些字之后 [01:11:02] 看到你你输入了这些prong之后 [01:11:06] 这个这个GPT要decode下一个token [01:11:09] 哪一个几率是哪一个字的几率是最高的 [01:11:12] 这样子哦 [01:11:13] 有点这个味道哦 [01:11:14] 他就我们就是希望能够可算这个东西是可计算 [01:11:20] 那但是有时候我们说哎 [01:11:22] 那那我要怎么让电脑去学这件事情哦 [01:11:26] 那这个是在这个是Waltovec当初的paper model [01:11:30] 提到这两种的 [01:11:33] 就是有点像 [01:11:36] 你可以说哎你是不是像克洛兹的学习 [01:11:38] 但是他要给两种不同的学习的方式哦 [01:11:42] 那大家就知道说先记一下名字 [01:11:45] 一个叫CBOW一个叫SKIGRAND [01:11:48] 那CBOW其实是比较有点像克洛兹的 [01:11:51] 其实叫continuous break of wall [01:11:53] 就是他其实在算什么 [01:11:56] 当我这个句子我知道他的前后文 [01:11:59] 我知道前后文的时候 [01:12:02] 我要猜他的center wall [01:12:05] 就是猜他中间那个 [01:12:06] 那个字哦 [01:12:07] 我可以算他property [01:12:09] 就有点像克洛兹 [01:12:10] 这是CBOW [01:12:12] 但是一般来讲CBOW我们 [01:12:15] 在训练比较不是那么直觉 [01:12:17] 然后也比较不容易 [01:12:18] 反向我们会做SKIGRAND [01:12:22] 就是我们会当你看到这个字的时候 [01:12:25] 他前面应该长什么 [01:12:27] 后面应该长什么 [01:12:28] 这样子哦 [01:12:29] 就是有各种可能各种可能比较比较克洛兹 [01:12:32] 比较像哎 [01:12:33] 你看到这个字的时候 [01:12:35] 你前面 [01:12:36] 联想到什么 [01:12:36] 后面联想到什么 [01:12:38] 他会去算出这样的property [01:12:41] 那我们之后会带那个WV的model [01:12:44] 经验上就是用这种方式去算的 [01:12:47] 其实有点也像这种BIGRAND的方式 [01:12:51] 就是我给你一个字 [01:12:53] 他下一个字 [01:12:53] 但是我们会看他的COWCURRENCE周边的字 [01:12:56] 这样子 [01:13:00] 所以我们有了语料库之后 [01:13:02] 根据该SKIGRAND [01:13:03] 我们就一个contact window size是1的 [01:13:06] 就是比如说这句话 [01:13:09] 那我从第一个字开始 [01:13:11] contact window是1代表我就接连的一个字 [01:13:16] 那CENTERWALL是折 [01:13:17] 然后我的contact就是CAT [01:13:19] 下一个CENTERWALL是CAT的时候 [01:13:21] 他的contact就是折跟lickit [01:13:24] 就是这样子 [01:13:26] 就是语料来 [01:13:27] 我就scan一遍 [01:13:28] 我就可以建立出这个TRAINING的WALLPAYER [01:13:32] 有INPUT有OUTPUT [01:13:34] 我那字太美好了 [01:13:35] 就是 [01:13:36] 可以训练 [01:13:37] 就是我有一个SUPERVISED DATA做这件事情 [01:13:43] 我刚才讲这个步骤 [01:13:44] 其实你会觉得很trivial [01:13:47] 但是这个动作其实是一个 [01:13:51] 非常 [01:13:53] 你说有创意吗 [01:13:54] 或是说一个人类的一个 [01:13:58] 我觉得是一个训练上的一种巧思 [01:14:02] 就是说 [01:14:03] 当你在记忆学习 [01:14:05] 你只能说 [01:14:05] 老师这个SUPERVISED DATA训练资料很少 [01:14:09] 每次跟厂商合作 [01:14:10] 他们只标十笔 [01:14:11] 就叫我们做出一个很厉害的模型 [01:14:13] 怎么可能 [01:14:14] 所以SUPERVISED DATA的多广跟夸合体 [01:14:18] 会影响模型的能力 [01:14:21] 这大概无用字 [01:14:22] 但是通常绝对你拿不到这么多 [01:14:26] 尤其是在做大量语料的东西的时候 [01:14:28] 你不带个人去找语言学家去标说 [01:14:30] 这个字他理论上前后字是不是 [01:14:32] 所以你就要自己设计你的训练资料 [01:14:37] 那怎么设计 [01:14:38] 说好吧 [01:14:39] 来找同学一起这样十个人 [01:14:41] 然后每天都熬夜去标这些 [01:14:44] 其实不用那么复杂 [01:14:45] 你就自己设计一个方式 [01:14:49] 从UNSUPERVISED的COPUS [01:14:53] 这个概念就很简单 [01:14:54] 我就看到CONTEXT [01:14:56] 他的前后文应该是什么 [01:14:59] 我的INPUT看到这个字 [01:15:01] 我的OUTPUT应该是CAT [01:15:02] 我看到CAT的我的OUTPUT应该是THE跟NICKED [01:15:06] 这样子 [01:15:07] 所以你就可以去写一个程式 [01:15:09] scan一下 [01:15:10] 这个把维基百科抓下来 [01:15:12] scan一下这个WARPAGE [01:15:16] 那你说我可以做CONTEXT WINDOW SIZE.2 [01:15:20] 我就发现变多了 [01:15:22] 一个字前后两个字 [01:15:24] 他的PAGE就变多 [01:15:26] 我就可以看更多的东西 [01:15:28] 那自动化的方式 [01:15:30] 产生一个这样的监督式 [01:15:32] 这样的学习 [01:15:33] 这其实都是后来 [01:15:35] 一个在NLP非常常用的概念 [01:15:40] 因为我们不太可能去找人 [01:15:42] 去标很多的这样的训练资料 [01:15:44] 所以这也是为什么像TRANSFORMAL [01:15:46] 后来像BIRD这种模型 [01:15:48] 做克洛茨 [01:15:50] 做NLM [01:15:51] 做MASKING这种动作 [01:15:52] 其实就是你可以设计一下 [01:15:54] 这种UNSUPERVISED TRAINING的方法 [01:15:57] 使得他可以大量的自己在那边学 [01:16:00] 你不用人在介入 [01:16:01] 那人 [01:16:02] 唯一要介入就是提供人类所有的knowledge [01:16:05] 这样子 [01:16:06] 好 [01:16:07] 那这是CONTACT WINDOW.1的 [01:16:09] 当然你会觉得好像就是 [01:16:11] 就是SERUNDING的一个字 [01:16:12] 但是2的时候 [01:16:13] 你可以发现 [01:16:14] 我就SERUNDING两个字这样子 [01:16:16] OK [01:16:18] 好 [01:16:19] 我们先看这个图 [01:16:21] 其实之前有同学问我说 [01:16:22] 如果没有学过机器学习 [01:16:25] 学这么个课会不会有点辛苦 [01:16:29] 其实我是觉得还好 [01:16:31] 但是我不知道 [01:16:32] 如果你没学过机器学习 [01:16:34] 你看这个图会有什么感觉 [01:16:37] 可能我不知道你的想象力丰富这样子 [01:16:41] 的确我不会讲NN的东西 [01:16:43] 所以你可能要自己catch一下这些概念 [01:16:48] 那讲WATTO VECTOR [01:16:49] 其实我上面摆一个连结 [01:16:51] 这个连结其实我觉得是蛮平易近人 [01:16:55] 就是你可以看懂那里面的概念 [01:16:59] 我们先来看这件事情 [01:17:01] 他其实WATTO VECTOR是什么概念呢? [01:17:02] 他其实就是在一个非常简单的一层hidden layer的NN模型做训练 [01:17:09] 这样一层其实你可以想像 [01:17:12] 如果你做过类似人性网络的学习 [01:17:14] 你就知道就两个矩阵 [01:17:16] 就是这边的A局的weight跟这边的A局的weight [01:17:20] 所以我们就是要train出这两个matrix [01:17:25] 这两个matrix前面是V [01:17:27] 其实就是我们要的embedding或embedding [01:17:30] 为什么? [01:17:30] 这个就是我们要的 [01:17:31] 我们之后再讲 [01:17:32] 就是这样你可以想像一个这样简单的一层hidden layer [01:17:36] 然后我的input是什么? [01:17:38] 我的input是我的1-hard的train data [01:17:43] 就是刚才我们的train data长这个样子 [01:17:46] 就是这个字进来输出就是这个字 [01:17:50] 这个字进来我们还不知道他什么概念 [01:17:52] 但是我就给他1-hard [01:17:54] 比如说我们的字典 [01:17:56] 1万个字 [01:17:57] 那他就是长度1万的一个1-hard的Vector [01:18:01] 这个1-hard的Vector进来之后 [01:18:03] 假设这个模型已经学好了 [01:18:06] 他就会学会中间这个hidden layer的neuron的表示 [01:18:12] 所以是什么? [01:18:13] 我如果这边有300个neuron代表什么? [01:18:16] 我就用这300个hidden state [01:18:19] 有300个数字 [01:18:20] 300个数字来表示中间我input的这一个1-hard之后 [01:18:25] 他应该要长这300个数字 [01:18:28] 再透过这300个数字呢? [01:18:30] 这300个数字可能就是描述我这个图的例子 [01:18:34] 是paper的例子 [01:18:35] 就是这个蚂蚁 [01:18:37] 就是这个hands [01:18:38] 我用这300个数字来描述这个单字 [01:18:41] 然后这300个数字呢 [01:18:42] 再透过这些combination [01:18:45] 然后去预测他的surrounding text [01:18:50] 他的context是什么? [01:18:52] 所以比如说刚才的这个cat进来之后 [01:18:56] 我就抓出这300个cat应该表示什么之后 [01:19:00] 再透过 [01:19:00] 那个combination之后 [01:19:01] 我就能就预测说 [01:19:02] 你的surrounding text应该是the跟decade [01:19:06] 几率要很高 [01:19:07] 其他都要很低这样子 [01:19:09] 所以如果模型在透过这样学习 [01:19:13] 他能够很正确的预测出这个字的surrounding text [01:19:18] 就在那个contact window下surrounding text [01:19:21] 那我们其实是可以claim说 [01:19:24] 这样的模型学会的这样的一个表示其实是知道 [01:19:30] 人类的文字的概念 [01:19:33] 这是一个非常strong的假设 [01:19:37] 就是他只是预测他的surrounding text [01:19:40] 但是你说可以预测surrounding text [01:19:43] 那就懂得文字了这样子 [01:19:45] 这个这边的一个claim是这个样子 [01:19:49] 就跟以前 [01:19:50] 以后我们在讲transformer之后 [01:19:53] 就知道说原来做完客认证之后 [01:19:55] 这个birth就可以告诉我们整句的表示是什么 [01:20:00] 有点像这样的味道 [01:20:01] 只是当初是一个非常 [01:20:03] 这个当初其实还没有deep learning [01:20:05] 所以他就是这个一层hidden layer的东西去选 [01:20:09] 那我们当初说这两个vector [01:20:13] 一个是v的matrix [01:20:15] 一个是u的matrix [01:20:17] 那其实整个模型圈完之后 [01:20:20] 其实你的embedding在哪里 [01:20:21] 你的embedding就是前面第一个v [01:20:24] 就是你这个第一层的weight的矩阵 [01:20:29] 那个等下 [01:20:30] 你就可以知道这是什么意思 [01:20:33] 所以在这整个过程 [01:20:34] 这整个过程其实就是 [01:20:36] 我们会有一个几率模型 [01:20:38] 这几率模型就长这样 [01:20:39] 非常简单的两层的这个NN [01:20:43] 然后你会有刚才我们切出来那些trump [01:20:45] 那些word pair [01:20:47] input什么字output什么字这样子 [01:20:49] 然后你现在做模型的参数的学习 [01:20:54] 这边的学习过程其实就是NN的学习 [01:20:57] 因为你有output data [01:20:59] 你有output data [01:21:00] 你就知道说input什么应该output什么 [01:21:02] 所以你可以算出loss [01:21:04] 你可以算出这个NN的loss是什么 [01:21:07] 然后你就可以去update整个这个参数 [01:21:10] 就是那个uv的参数 [01:21:12] 使得这整个模型圈完之后 [01:21:15] 收敛完之后loss变低了之后 [01:21:17] 它能够很精确的预测出这个字cat [01:21:21] cat进去之后 [01:21:22] 它能够预测出这根decade这样子 [01:21:26] 它其实精神上就是这样 [01:21:28] 只是说我们现在是用 [01:21:30] 我们的model就是说我看到CenterWall [01:21:33] 我要去预测ContextWall [01:21:36] 所以CenterWall在这里 [01:21:40] 然后ContextWall在这里 [01:21:41] 它要能够predict这样子 [01:21:44] 所以当然有很多细节 [01:21:48] 包含说我们的VocabularSize一万 [01:21:51] 我这边也是VocabularSize一万 [01:21:53] 就是你要cat要能够预测 [01:21:56] 所有相对于在这个字典里面 [01:21:59] 一万个字的Probability [01:22:01] 那中间这个就是可能可能刚才有同学问的 [01:22:05] 这个WallVector要设多大的这个这一块 [01:22:09] 那你可以设300 [01:22:11] 当然我记得好像Default是700多的样子 [01:22:13] anyway就是你可以自己调整 [01:22:16] 我才说老师我钱很多 [01:22:17] 我设一万好不好 [01:22:19] 可以但是效果不会比较好 [01:22:22] 就是你可以用更大更长的Vector [01:22:25] 来学会这个东西的表示 [01:22:29] 好这个这边的步骤其实就是 [01:22:32] 把NN的细节再带一遍 [01:22:35] 我先用例子来讲一下 [01:22:38] 就是说好比如说我们进来的字就是这些字 [01:22:42] 我们Vocabular就是这个8个字 [01:22:45] 所以我的一开始One-Hot Vector长度就是8 [01:22:48] 然后就是One-Hot像这个cat就是在第二个字是1这样子 [01:22:52] 所以我的Input就是一个One-Hot [01:22:55] 而且是VocabularSize的长度这样的一个Vector [01:22:59] 然后我透过这个V [01:23:01] 我们就假设他已经学完了 [01:23:02] 学完之后我这个V做什么事情 [01:23:07] 他其实就是存着每一个字的最后的Embedding [01:23:11] 虽然一开始我们不是这样假设这件事情 [01:23:14] 但是这样的一个中间这个Metrics学到了 [01:23:17] 其实因为我这个One-Hot [01:23:19] 我这One-Hot其实就是把中间这一个第二个Row把它提取出来 [01:23:25] 所以当我看到cat的时候 [01:23:27] 我就Output第二个Row [01:23:28] 第二个Row就是cat的最后学到的我Embedding [01:23:32] 这个我Embedding其实你可以想像我们现在在这里 [01:23:36] 这cat的Vector就是在这300个Nurong的数字这样子 [01:23:40] 这300个Nurong的数字cat这是第二层的部分 [01:23:46] cat在后面那一层的Umetrics [01:23:51] Umetrics其实当初这样写有点不太对 [01:23:55] 你会觉得这是也是cat的Metrics [01:23:57] 不是他其实是对cat来讲的Output Weight [01:24:02] 这什么意思呢 [01:24:05] 我这边Highlight这个意思就是 [01:24:08] 这个当初cat进来之后 [01:24:09] 我把这cat的300个数字透过一个 [01:24:15] 你知道NN就是一个Weighted Sound [01:24:17] 就是我一个把这300个数字做一个加权 [01:24:20] 然后从Max之后我就输出一个值 [01:24:24] 这个值就是Ability的值的Probability [01:24:28] 当然中间有一些Nurong来源我就省略了 [01:24:32] 这样的计算代表什么 [01:24:34] 就是好吧 [01:24:35] 那意思说我可以根据你当初学会的猫的这300个数字 [01:24:41] 加权一下这是cat的Weight [01:24:45] 这个橘色的箭头就是cat的Weight [01:24:47] 然后他可以算出说 [01:24:49] 原来cat跟Ability之间的关系就是学这几个权重 [01:24:55] 那这个U就大了 [01:24:57] 这U就大多了 [01:25:00] 也不是大多 [01:25:01] 其实是一样 [01:25:01] 因为这边也是100 [01:25:02] 这边是10000到300 [01:25:04] 这边是300到10000这样子 [01:25:08] 只是说这边要学的比较复杂一点 [01:25:11] 就是学我这300个值怎么去输出每一个字的Probability [01:25:18] 你也不要管他怎么学 [01:25:19] 反正就是NN [01:25:20] 你只要给他的World Pair Input Output [01:25:23] 他就可以靠着Loss Backpropagation去学会这些Weight [01:25:27] 然后学会这个Weight [01:25:29] 学完Weight的时候 [01:25:31] 我们就把这个Matrix [01:25:32] 拉出来当成是我学会的Weight Embedded [01:25:36] OK [01:25:38] 所以这个过程大概这样 [01:25:40] 那后面这边就是在NN学的过程 [01:25:44] 就是你的Input是这样 [01:25:46] Output是这样 [01:25:47] 这是你的Training Data [01:25:48] 但是你真正的Forward Pass之后 [01:25:51] 你的Y Head值会长这样 [01:25:54] 你会做Normalize之后 [01:25:56] 你会发现这个Probability大概是这样子 [01:25:59] 有高有低 [01:25:59] 有些比较高这样子 [01:26:00] 有些比较低 [01:26:02] 我想大家都会做 [01:26:03] 就是我们就算一个Cross Entry [01:26:06] 就算我的标准答案这样 [01:26:08] 跟你算出来的每一个这个所有的这些Logic的这种Probability分布 [01:26:16] 那我可以算一个Loss [01:26:18] 就是我理论上这个要1 [01:26:20] 你这个Probability怎么那么低 [01:26:22] 我就要调整一下 [01:26:23] 我就要Backpropagation回去 [01:26:25] 改变一下我的参数 [01:26:29] 这个参数还有这个参数这样子 [01:26:31] 这是两个都是当初的 [01:26:32] NN的参数的东西 [01:26:36] 所以它其实不是DeepLine的东西 [01:26:37] 它其实是一个非常小的模型 [01:26:39] 小的一个以前类神经网路刚开始的长相 [01:26:43] 就是一层Hidden Layer做出来的东西 [01:26:47] 只是靠着这样学习 [01:26:48] 学到后来发现我们的V-Metrics [01:26:52] 貌似这些Wall-Embedded [01:26:55] OK [01:27:00] 所以我其实都不是用很Homo的东西在讲 [01:27:07] 我都是用比较口语的东西在讲 [01:27:09] 但是希望你可以去了解说 [01:27:12] 为什么人家这个一层的NN就可以搞这么厉害的事情 [01:27:17] 那为什么这样的一个Wall-Pair [01:27:19] Context-Wall的学习的过程 [01:27:24] 我就可以学会说 [01:27:25] 原来这个做出来的Metrics [01:27:27] 就是每一个字的Embedded [01:27:30] 然后透过这个字的Embedded [01:27:32] 我再透过这个 [01:27:34] 这有点像字跟字之间的Bullation [01:27:37] 你的Metrics去计算出它的Context的Probability [01:27:43] OK [01:27:45] 这样算完之后 [01:27:46] 我就可以得到Wall-Embedded [01:27:48] 就不再是One-Hot的东西了这样子 [01:27:52] OK [01:27:53] 所以我们的第一个Assignment [01:27:56] 你就是要做这件事情 [01:27:59] 那当然你不用自己刻这些模型 [01:28:03] 那你就呼叫这些Package就有现成的模型 [01:28:06] 或者说以后你也不用做这些模型了 [01:28:07] 你也不用自己创建了 [01:28:08] 反正这些现成的套件Wall-Embedded [01:28:11] 虽然也不见得会一直用Wall-Embedded [01:28:14] 反正Wall-Embedded就可以拿人家创建好了 [01:28:17] 然后或我自己再Update一下 [01:28:19] 或我自己创建放Scratch也可以 [01:28:21] 但是精神上就是这样 [01:28:24] 那我后面有摆两个 [01:28:29] 一个是Glowback一个是Fastex [01:28:32] 当初做这个Wall-to-back出来之后有一些延伸 [01:28:36] Wall-to-back大概是2013年 [01:28:38] 然后Glowback是2013年 [01:28:40] 现在是2014年 [01:28:42] 大佬在这 [01:28:44] Crystal在这 [01:28:45] Stanford [01:28:46] 就是他们其实都跟得很快 [01:28:47] 这些新的东西 [01:28:49] 立刻就把展开所有的研究的问题都出来了这样子 [01:28:55] 那他的想法是什么 [01:28:57] 你看到这个Global这个字你就知道 [01:29:00] 原来Wall-to-back的是Local [01:29:02] 它是Global这样子 [01:29:03] 你可以做这样的对比 [01:29:05] 的确我们当然刚才的 [01:29:10] 刚才的做康复的这个方式 [01:29:11] Context Window那一块 [01:29:14] 非常Local [01:29:15] Context Window等于1 [01:29:17] 你说老师我做大一点做到3 [01:29:22] 也蛮Local的这样子 [01:29:24] 那Glowback他算的是什么 [01:29:27] 他算的是整体的统计的东西 [01:29:32] 我这边就摆这几个字 [01:29:33] 当然如果你有兴趣可以去看paper再算的东西 [01:29:37] 所以他多了一点Global的资料之类的 [01:29:40] Global的资料这样子 [01:29:44] 那 [01:29:45] 其实是 [01:29:46] 蛮可以看的在paper [01:29:49] 那另外一个Fastest [01:29:51] 其实 [01:29:53] 当初Fastest出来之后 [01:29:56] 大家觉得他应该会是 [01:29:58] 重点 [01:29:59] 因为他有现在的Tokenizer的 [01:30:02] 前型这个雏形的椅子 [01:30:04] 就是 [01:30:05] 他是他有做到Pack Label [01:30:08] 因为其实你做 [01:30:10] 这也会在Assignment 1讨论 [01:30:12] 就是说你当你在做这件事情的时候你会发现 [01:30:16] 我一些特殊的字呢 [01:30:18] 我是一些新创的 [01:30:20] 尤其是英文这种 [01:30:21] 常有些奇怪的片语的字 [01:30:24] 以前语调库没有 [01:30:25] 学不到他的概念怎么办 [01:30:27] 或是常有些医学上的字是拼凑的 [01:30:31] 拉丁美字那种前后缀的东西拼凑的东西 [01:30:35] 以前没看过什么 [01:30:37] 所以Fastest其实是有 [01:30:39] 从Categor Label开始做 [01:30:43] 那 [01:30:45] 其实也有一点在做 [01:30:47] Engram的Sliding [01:30:49] 就是以比如说以中文来讲 [01:30:52] 他会做这样Engram Sliding [01:30:54] 的确有一些做 [01:30:56] 就是像这几个如果有机会可以去看 [01:30:59] 但他其实有摆到说 [01:31:02] 中文的Morphology [01:31:05] 就是比如说 [01:31:06] 步骤啊 [01:31:07] 用步骤拆解这样子 [01:31:09] 不过那个就 [01:31:12] 那学问很大 [01:31:13] 就是说 [01:31:15] 英文我们会做Categor Label [01:31:17] 就是说比如说我会做单 [01:31:18] 单一的字母 [01:31:20] 或是这些前最次比如说IN啊PRE啊 [01:31:23] 或是结尾 [01:31:24] 给了Y的这种的学习 [01:31:27] 但是以中文来讲其实很难去 [01:31:30] 做这样的事啊 [01:31:32] 多半中文可能就是用 [01:31:34] 用比较大一点的Engram来 [01:31:36] Count这些东西 [01:31:38] 所以其实他可以解决说 [01:31:39] 所谓的Out of Vocabulary的问题 [01:31:42] 就是说他可以靠着虽然也没看过这个字 [01:31:45] 但他可以拼凑啊 [01:31:47] 他可以拼凑出这个以前叫什么 [01:31:49] 这个东西叫什么 [01:31:50] 尤其是医学医学很多都可以这样拼凑出来 [01:31:53] 你会发现医学字 [01:31:55] 有一些什么 [01:31:56] 什么疾病啊症状啊 [01:31:58] 或是指人体的部位什么的东西 [01:32:01] 他其实都是拼凑 [01:32:02] 你只要能够拆解出每个意识 [01:32:04] 意识都蛮接近的 [01:32:06] 他都可以这样做出来这样子 [01:32:08] Fast Text [01:32:09] 现在其实你用套件都可以交出这种 [01:32:13] Grow Back Fast Text的Embedding这样子 [01:32:17] 所以到底打个好 [01:32:18] 不知道 [01:32:19] 其实 [01:32:20] 各有利弊啊 [01:32:21] 其实你在你的 [01:32:22] 你的不同领域都可以试试看这样子 [01:32:25] 当然一般来讲我们会觉得Grow Back比Auto Back好 [01:32:29] 这样子 [01:32:29] 就是 [01:32:31] 某种程度上比较有一些subset superset的关系 [01:32:35] 但是Fast Text跟Grow Back之间的关系 [01:32:38] 倒不一定 [01:32:39] 不一定 [01:32:40] 通常我们 [01:32:42] 以前啊以前就是JLM还没出来之后 [01:32:44] 以前 [01:32:45] 我们都会他比如说拿这个东西 [01:32:47] 我们自己每一笔在拿自己的Corpus [01:32:51] 再重新圈或是再微调一下这样子 [01:32:55] 就尽量让这个OOV的问题降低这样子 [01:32:59] 那到底什么怎么样去评估我做出来的东西好坏啊 [01:33:03] 有一个Diasei叫做Fosting [01:33:05] 这个其实蛮小的 [01:33:07] 这个你看这个数字就知道 [01:33:08] 其实蛮小的 [01:33:09] 它大概就算这些 [01:33:11] 它有一些人工给的 [01:33:13] 这两个字应该相似度长这样这样 [01:33:15] 它就给你一些分数这样 [01:33:18] 那你自己 [01:33:19] 自己做出 [01:33:20] Embedded之后再去看看我的这两个字的相似度是不是跟这个很像这样 [01:33:26] 这个WordSim其实是 [01:33:30] 蛮旧的 [01:33:31] 但是还算是个可以用的啦 [01:33:34] 等下我们会看到 [01:33:35] 这个MTB这样子 [01:33:37] 它就更复杂一点了 [01:33:39] 这样子 [01:33:42] 然后最后这个是 [01:33:43] 这个我们最后 [01:33:46] 其实是这大概是一年前的新闻 [01:33:49] 就是它是一家公司这家公司 [01:33:51] 它其实是 [01:33:52] 做 [01:33:54] Vector Database [01:33:55] 其实你知道有N出来之后 [01:33:57] 大家就发觉其实 [01:33:59] 需要RAG [01:34:00] 需要RAG [01:34:01] 大家就有些公司就去把一堆 [01:34:05] 特殊的语料特殊的资料可能需要授权的资料干嘛 [01:34:09] 就是这个这个公司说我要这样服务他就帮 [01:34:12] 这家公司建立所谓的Vector Database [01:34:15] 然后让他嫁接一些人去提供服务 [01:34:19] 所以 [01:34:20] 有一些公司在做这样的事情 [01:34:22] 那这是那个公司的 [01:34:24] 技术 [01:34:25] 技术长 [01:34:26] 他讲的事情 [01:34:28] 大家可以去看一下这个报道 [01:34:30] 就是他一年前写的 [01:34:32] 就是他做这个公司的 [01:34:35] 心得 [01:34:36] 其实第一句话对你们蛮重要的 [01:34:39] BM25是一个还是一个很strong的Base Line [01:34:42] 就是 [01:34:44] 还是很有用 [01:34:45] 还是很有用虽然他是一个 [01:34:48] 靠着Sparse [01:34:50] Vector [01:34:51] 简单的算关键字但是他还是有一点权重 [01:34:55] 他有点权重其实 [01:34:57] 就那个效果就会出来 [01:34:59] 那你说 [01:35:00] 老师那他这么强那我们干嘛学 [01:35:02] 这种Dense Vector [01:35:04] 干嘛学所谓的 [01:35:06] Wall Embedding啊 [01:35:07] Sentence Embedding [01:35:09] 的确没错啦 [01:35:11] 就是 [01:35:14] 我们做出来的Wall Embedding或是之后提到的Sentence [01:35:18] 或Document Embedding [01:35:19] 的确能够很 [01:35:21] 比较精确去Capture [01:35:22] 整个句子的意思或是说 [01:35:24] 每个字的动态的表示他能够抓得到 [01:35:28] 但是你可以想象 [01:35:29] 因为那个向量的表示是 [01:35:33] 整个句子 [01:35:37] 而不是单字的一些概念 [01:35:39] 所以当你 [01:35:40] 你想要找的东西其实就是句子里面非常重要的关键字的概念的时候 [01:35:46] 其实 [01:35:47] 那个 [01:35:49] 通常你的 [01:35:50] 用Sparse的Metrics [01:35:52] 反而效果会比较好 [01:35:54] 比如说我讲一句话 [01:35:56] 我今天来上自然语言课程 [01:35:59] 自然语言处理课程 [01:36:00] 然后跟你讲一句话我今天去上机器学习课程 [01:36:05] 虽然 [01:36:06] 重点的课不一样 [01:36:08] 但是你前面的字都一样啊就是 [01:36:10] 今天跟我然后去上 [01:36:13] 这些都一样啊 [01:36:14] 那 [01:36:15] 那电脑哪知道你的Highlight是什么 [01:36:19] 他反正就是把整句话学会一个表示告诉你 [01:36:22] 这学会的表示是什么 [01:36:23] 其实我们也不知道那个向量是什么 [01:36:26] 他可能会把说原来是你个人今天做了什么事 [01:36:30] 只是说那个事情有一个课程在里面 [01:36:33] 所以你可以想象那个课程其实在整句的Embedding所带来的含量 [01:36:39] 其实 [01:36:40] 不是 [01:36:42] 不是非常的被凸显出来 [01:36:44] 虽然你说 [01:36:45] 上了课的课本也不是很重要 [01:36:48] 但是 [01:36:49] 他就会浮掉 [01:36:51] 所以通常我会讲模糊就是这样 [01:36:53] 因为他会跟其他字的概念 [01:36:55] 混在一起 [01:36:56] 所以他的字就他的意义就不是这么的凸显 [01:37:01] 所以当你以后如果用一些Bird [01:37:03] 或是你拿LM来当Encode转换成Sentence Embedding [01:37:08] 或者是Document Embedding的时候 [01:37:10] 你就发现其实 [01:37:12] 那个向量的分布 [01:37:14] 就违背了我们一开始在讲Ombedding的时候 [01:37:17] 我们希望做到 [01:37:19] 就是非常分散 [01:37:21] 非常有鉴别性 [01:37:22] 其实没有 [01:37:23] 尤其是当你句子越长的时候 [01:37:26] 概念就会 [01:37:27] 概念就会 [01:37:28] 越来越小这样子 [01:37:29] 这是什么意思呢 [01:37:31] 就比如说 [01:37:33] 你教员 [01:37:35] 请你把今天的影片输进去 [01:37:37] 请用一句话来描述老师今天讲的重点 [01:37:40] 你觉得他会说什么 [01:37:43] 然后明天的下礼拜的 [01:37:45] 你再教员去说请用一句话来 [01:37:47] 摘要老师今天讲的重点 [01:37:49] 搞不好你发现16周 [01:37:51] 重点都一样这样子 [01:37:53] 老师在教NLP这样子 [01:37:55] OK [01:37:56] 所以当你的句子越长 [01:37:59] 你要讲的东西越多的时候 [01:38:01] 你又用同样的这个 [01:38:04] Embedding Size [01:38:05] 去描述他的时候 [01:38:07] 他的概念就会非常的Centralized [01:38:09] 非常的难以区分 [01:38:12] 所以这个当然就是 [01:38:13] 就是现在用LM当 [01:38:15] Decoder的问题 [01:38:17] 或是说 [01:38:18] 拿LM来当Encode也会有这个问题 [01:38:22] 不过这个就看你自己 [01:38:23] 对这东西体会 [01:38:25] 什么时候该嫁接什么样的东西 [01:38:27] 比较敏感度高 [01:38:29] 所以 [01:38:29] 也不是everything都是拿LM就可以 [01:38:32] 解决掉了 [01:38:34] 后面其实有一些 [01:38:36] 这是他Highlight的一些重点 [01:38:38] 这个MTB蛮值得看的 [01:38:39] 我不知道我现在点下去 [01:38:41] 我去做啥事 [01:39:05] 做啥事好了 [01:39:13] 把他Tick过来 [01:39:15] 你可以继续看MTB [01:39:17] 他其实是一个蛮标准的 [01:39:19] 做Embedding的Benchmark [01:39:21] 然后有分 [01:39:24] 语言 [01:39:25] 有分语言 [01:39:26] 然后有分 [01:39:27] 现在的这种Modality [01:39:29] 或者是说 [01:39:30] 你的任务 [01:39:32] 然后或者是说不同Domain [01:39:34] 比如说Code [01:39:35] 做Code或是什么 [01:39:38] 其实是一个蛮 [01:39:40] 而且现在也蛮 [01:39:42] 蛮Hard [01:39:43] 也不是说蛮Hard [01:39:44] 就是蛮常被Reference的一个Benchmark的压缩 [01:39:48] 其实 [01:39:50] 其实做NLP或是做现在AI的人 [01:39:53] 看到Benchmark的压缩都 [01:39:55] 都会非常兴奋 [01:39:57] 这个好多好多 [01:39:58] 然后 [01:39:59] 他搞不好还可以拿来 [01:40:01] 帮你做一些其他事情 [01:40:04] 这个MTB是 [01:40:05] 蛮值得去看一下 [01:40:07] 那 [01:40:07] 现在如果你自己想做一个非常厉害的Volume Evaluate [01:40:11] 你就会在 [01:40:12] 这些Leaderboard上去跟大家比说 [01:40:14] 这个在 [01:40:15] 某个语言 [01:40:16] 或是某个任务 [01:40:17] 大家做怎么样这样子 [01:40:20] OK [01:40:28] 这样会跑掉吗 [01:40:40] 摸个就不要去动他 [01:40:45] 底下几个重点 [01:40:47] 就是说当然我们现在是 [01:40:49] 做所谓的 [01:40:50] Static Embedding [01:40:51] Waterback Growback [01:40:52] 就是这个字在哪里就是这样的一个向量叫Static [01:40:56] 他摆在哪里摆在不同的句子 [01:40:58] 还是这样的意思这样子 [01:41:00] 那当然这不是我们要的 [01:41:02] 因为这个太死 [01:41:04] 那我们是希望一个比较Contextual Embedding [01:41:06] 那当然之后我们提到Burr就是这样的概念 [01:41:10] 那这边其实前面一直没提到Dimension [01:41:13] 这个就是他们 [01:41:14] 在挣扎的东西 [01:41:16] 我该用768维度还是 [01:41:19] 1000多维度 [01:41:20] 但这边提到的 [01:41:22] 可能也有跟我们后面要讲的 [01:41:25] 这种 [01:41:27] Transformal里面那个 [01:41:29] 那个Dimension也有点关系 [01:41:31] 不只是单子这个Waterback里面那个300个Nuron这样子 [01:41:36] 那 [01:41:37] 这件事其实就有点 [01:41:39] 呼应我刚才讲的 [01:41:40] 就是说 [01:41:41] 有时候你觉得相似的 [01:41:43] 相似他其实 [01:41:44] 不见得是相关 [01:41:46] 但这个 [01:41:48] 这句话以前在做 [01:41:50] 资讯检索 [01:41:51] 也都被探讨过了 [01:41:52] 就是 [01:41:53] 算起来很像这个字都有写得到 [01:41:55] 但是整句话意思完全不一样这样子 [01:41:58] 那像这两句一个是要去买 [01:42:00] 修水龙头一个是要去 [01:42:02] 如何去买这个 [01:42:04] 厨房的这个水龙头 [01:42:05] 所以 [01:42:06] 其实整个的Intent都完全不同 [01:42:09] 但是这个字可能 [01:42:11] 他的鉴别度够 [01:42:13] 所以他其实在整个Embedding的表示 [01:42:15] 跟 [01:42:16] 重要性其实就会凸显出 [01:42:18] 整个 [01:42:19] 搞不好整个向量其实很接近 [01:42:23] 那 [01:42:24] 到底是不是要做Vector Search [01:42:26] 还是Keyword Search就好 [01:42:28] 其实你看 [01:42:29] 做Vector Database都有这种想法 [01:42:31] 所以 [01:42:32] BM25还是乖乖的用一下这样子 [01:42:37] 然后Vector Search是 [01:42:40] 对 [01:42:40] 打错字 [01:42:43] 对打错字是非常不robust [01:42:46] 他非常sensitive你可以想像我打错一个字 [01:42:49] 他其实 [01:42:49] 对应到Vector是完全不一样的 [01:42:51] 那你说 [01:42:52] 老师那我们用这种CharacterBase [01:42:54] 然后Facetest是不是比较好一点 [01:42:58] 可能有对 [01:42:59] 或者说以后我们就 [01:43:01] 做Burt这样子 [01:43:03] 但是你发现如果 [01:43:05] 如果你发现这个Typo [01:43:07] 其实在 [01:43:08] 意义上 [01:43:09] 就是比如说 [01:43:11] 打错一个Character [01:43:13] 如果那个看起来 [01:43:14] 或者说那个字不会 [01:43:16] 让你联想到其他字 [01:43:17] 可能都还好 [01:43:19] 但是其实很多时候他整个 [01:43:22] 整个 [01:43:22] 向量的空间会跑掉 [01:43:24] 其实 [01:43:27] 第一个assignment你可能做不出这个啦 [01:43:28] 因为你 [01:43:29] 你很难去做句子的embedding [01:43:32] 但是当你 [01:43:33] 你做完Burt之后 [01:43:35] 你可以自己试试看 [01:43:36] 把一个句子 [01:43:37] 改掉一个字 [01:43:38] 或是故意 [01:43:39] 写错一个字 [01:43:40] 看他出来的CLS Token [01:43:42] 会长什么样子 [01:43:44] 你就可以知道 [01:43:45] 这个人讲的事情 [01:43:47] 是对的这样子 [01:43:49] 然后 [01:43:50] out of domain [01:43:51] 这我们刚刚有提到这个OOV的问题 [01:43:53] 这个缩写是OOV [01:43:55] 那另外一个是OOD [01:43:58] 这个有点像 [01:43:59] 就是说反正都是没看过 [01:44:01] 就是我字典里面找不到 [01:44:03] 跟这个字我看不懂 [01:44:07] 某种程度上以技术来讲 [01:44:10] 发生的问题会很像 [01:44:11] 因为都是没trend过的 [01:44:13] 但是 [01:44:15] 字典没有的问题很大 [01:44:16] 因为你做了what to better你就发现 [01:44:19] 这个字根本没有出现 [01:44:21] 他其实就是 [01:44:22] 会有一个tag [01:44:23] unknown的tag [01:44:24] 那unknown的tag基本上在 [01:44:26] 以后在模型上就是一个 [01:44:29] 大家都长的一样的东西 [01:44:30] 或是一个random的东西 [01:44:33] 当然他也是可以被学的 [01:44:35] 不过 [01:44:36] anyway就是 [01:44:37] 就是一个tone在那里这样子 [01:44:40] 那没看过的字呢 [01:44:42] 就会随着 [01:44:43] 这个概念 [01:44:44] 你会自己去 [01:44:47] 长出别的意思啊 [01:44:49] 就这个字 [01:44:49] 在这个domain叫这个意思 [01:44:51] 那另外一个domain [01:44:52] 是另外一种意思 [01:44:53] 你的意思会不太一样 [01:44:55] 他不是unknown [01:44:56] 他可能会 [01:44:57] 会有shift [01:44:58] 会bias之类的 [01:45:00] 其实这个 [01:45:02] 各种可能 [01:45:03] 各种可能 [01:45:04] 但是以技术上来讲 [01:45:06] 你面对到的 [01:45:07] 长相会很像 [01:45:10] 这是他去年讲的 [01:45:12] 但是这句话我觉得现在 [01:45:14] 不见得这么的exactly对这样子 [01:45:17] 因为现在的RAG其实 [01:45:19] 就是这些人越来越强之后 [01:45:22] RAG的 [01:45:23] 需要性 [01:45:26] 有一点 [01:45:27] 不是这么必要 [01:45:31] 当我没说 [01:45:33] 就是有时候还是会的 [01:45:35] 就是在一些特定领域 [01:45:37] 还是会这样子 [01:45:38] 只是说他没有 [01:45:39] 这个一年前这么的critical [01:45:41] 就是说这些一定要用RAG来做这样子 [01:45:44] 你要做RAG [01:45:46] 一定要用IR [01:45:47] 你这边就逃不掉 [01:45:48] 就是比对 [01:45:49] 就是比对你 [01:45:50] 你的语料的东西 [01:45:51] 因为你没办法叫模型重新学这些东西 [01:45:54] 重新看这些东西 [01:45:58] 好 [01:45:59] 这是这个introduction的summary [01:46:01] 就是我们大概勾数一下 [01:46:03] 很快的勾数一下这个 [01:46:05] 这个传统NLP的SLP这样子 [01:46:07] 但其实很多细节我们都没有讲这样子 [01:46:09] 那 [01:46:10] 但是只留下一个 [01:46:12] 很 [01:46:12] 后面会用到的东西 [01:46:14] 我们要怎么去学字的表示 [01:46:16] 怎么样学这个 [01:46:17] 这个让电脑了解这个字的意识 [01:46:20] 用这样的Valve vector去看 [01:46:21] 带这样的概念 [01:46:22] 那我们的 [01:46:24] W2的投影片就会从这个概念继续接起来这样子 [01:46:29] 那这也是 [01:46:30] 在做NLP的那个年代大家想 [01:46:32] 知道的 [01:46:33] 东西这样子 [01:46:36] 好 [01:46:37] 这个 [01:46:37] 第一个部分到这边 [01:46:39] 那我先秀一下 [01:46:41] 我们的第一个assignment [01:46:43] 其实 [01:46:44] 已经放上去 [01:46:46] 我不知道 [01:46:49] 我又找不到 [01:46:55] PDF [01:47:03] OK [01:47:04] 这样看得到 [01:47:06] 好 [01:47:06] 其实我们的作业 [01:47:08] 没有变 [01:47:09] 主题还是一样这样子 [01:47:10] 他只是说我们有稍微要求 [01:47:12] 一点东西 [01:47:13] 跟去年不一样这样子 [01:47:16] 那 [01:47:17] 对这个可能要再强调一下因为 [01:47:21] 我不知道是Tica办公室看到我们这门课好像现在人数比以前多 [01:47:26] 我就觉得 [01:47:27] 高老师你应该要严格把关一下这样子 [01:47:30] 对我们 [01:47:32] 这门课的作业难度会稍微比以前稍微再多加一点东西 [01:47:36] 就是让大家不要 [01:47:38] 好像一句话就把作业做完了这样子 [01:47:41] 然后重点是我们 [01:47:43] 今年的课会有一个实体的crossbook考试 [01:47:47] 那那个考试其实 [01:47:49] 当然不会 [01:47:51] 不会考作比如说叫你写出BM25的公式 [01:47:55] 不会这么低级的题目这样子 [01:47:57] 但是 [01:47:58] 至少会 [01:47:59] 我觉得可以考出你 [01:48:00] 做这些作业或者是说 [01:48:02] 你在听这些内容你到底有 [01:48:04] catch到什么样的insight [01:48:06] 我觉得 [01:48:07] 那个是要能够写出来的这样子 [01:48:10] 我们来看第1个assignment [01:48:13] 做这个world knowledge [01:48:14] 这个对比 [01:48:16] 其实就是我们刚才那个 [01:48:18] man woman king queen那样的概念 [01:48:20] 就是做这样的事情 [01:48:22] 那这个对比的事情呢就是其实当初在做 [01:48:26] 这种thematic或者是学embedding的时候我们 [01:48:29] 最想 [01:48:30] 知道 [01:48:31] 或是说 [01:48:32] 如果 [01:48:33] 我们可以 [01:48:35] 没办法知道这种 [01:48:36] 绝对的向量表示 [01:48:37] 至少我们可以知道相对的向量的概念 [01:48:40] 我们可以算得出来的时候 [01:48:42] 有这样的东西出来的时候对我们来讲还蛮有用 [01:48:46] 好 [01:48:47] 那我们这边呢会有一个 [01:48:50] 这个有点像也不像test [01:48:52] test dataset就是拿这个Google的 [01:48:55] 有一个 [01:48:56] Dataset [01:48:57] world knowledge的Dataset [01:48:58] 那它这Dataset呢 [01:48:59] 有分一些的 [01:49:00] 这些category [01:49:02] 它这个 [01:49:03] 最主要是两大类的 [01:49:04] 一个是比较 [01:49:06] 语义上的观念 [01:49:07] 像king queen这种的 [01:49:08] 就是语义上的观念 [01:49:10] 那有一种是比较synthetic [01:49:13] 语法上就是有什么 [01:49:14] 形容词副词这种的relations [01:49:18] 然后它有定义几个subcategory [01:49:20] 你下载之后你就可以去看一下这样子 [01:49:23] 那其实就是要问你给你 [01:49:25] 给你ABC然后你要比较低这样子 [01:49:28] 其实就是要做这样一件事情 [01:49:30] 那 [01:49:32] 这是Dataset的长相 [01:49:34] 这是Symmetric的例子 [01:49:35] 它的category有一个Premary [01:49:37] 就是这样一句话四个字 [01:49:40] 这是Synthetic的 [01:49:42] 的例子 [01:49:43] 就是语法上的东西这样子 [01:49:46] OK [01:49:48] 然后 [01:49:49] 这也是 [01:49:50] 我们一直在犹豫的啦就是 [01:49:53] 因为实在 [01:49:54] 如果完全没给你code [01:49:58] 现在其实难度也不高 [01:50:00] 就是 [01:50:00] 我们就把这个 [01:50:03] 这个投影片丢给 [01:50:05] 丢给GBT家伙帮你写 [01:50:07] 他自己都写出来了 [01:50:09] 但是我们还是希望有一个规范 [01:50:11] 有一个规范就希望有一个Template [01:50:13] 你可以照这个做这样子 [01:50:15] 虽然有Template [01:50:16] 你一样也是可以Vibe Coding [01:50:19] 那当然你要自己重写 [01:50:22] 也可以这样子 [01:50:23] 那这个后面就有一些在 [01:50:26] Collab上的一些例子 [01:50:28] 那 [01:50:28] 这个课程 [01:50:30] 这个作业的资料 [01:50:32] 我们会有另外一段 [01:50:35] 录影是助教录的 [01:50:37] 会比较细一点 [01:50:38] 我大概就很简单的 [01:50:40] 带一下而已这样子 [01:50:42] 这是Collab介绍 [01:50:44] 我想如果 [01:50:46] 你应该都用过的话 [01:50:47] 应该都知道 [01:50:49] 那我们 [01:50:50] 这个在Github的 [01:50:53] 上面有这个code [01:50:55] 这个作业的code这样子 [01:50:57] 那你要先做整个 [01:51:00] 这个Google这个Data的 [01:51:03] 下载这样子 [01:51:05] 其实code都帮你写好了啦 [01:51:07] 所以 [01:51:08] 有一点 [01:51:09] 也不像手把手但是 [01:51:11] 就是 [01:51:12] 比较不会那么无助在做这件事情 [01:51:16] 那 [01:51:17] 那这是Data长这个样子 [01:51:21] OK [01:51:22] 那 [01:51:23] 怎么怎么载Data [01:51:25] 怎么去做这件事情啊 [01:51:27] 这个都有code [01:51:29] 那 [01:51:30] 这个作业大概会分两块 [01:51:32] 一个是 [01:51:33] 程式的部分一个是报告的部分 [01:51:35] 那程式部分我们就会列出几个to do [01:51:38] 然后有 [01:51:39] 百分比这样子 [01:51:40] 这个当然以前 [01:51:42] 在同学都会有一些问题说 [01:51:45] 我做到你讲这个怎么被扣分这样子 [01:51:49] 这个 [01:51:51] 说实在的虽然这个好像 [01:51:54] 蛮像选择题就一板一眼就是有就有没有就没有但是其实还是有一点 [01:52:00] 有一点模糊啊但是就是 [01:52:04] 就像你 [01:52:04] 你考 [01:52:05] 考联考一样嘛你作文 [01:52:07] 你没有得到满分你总不会说我都有写啊我这个作文他会写为什么我没有满分这样子 [01:52:12] 概念是这样子 [01:52:13] 所以 [01:52:15] 不要再太去在意啊 [01:52:17] 就是不要去计较说这个分数为什么你被扣了一分两分这样子 [01:52:23] 那 [01:52:24] 你被扣了一分一定是有人 [01:52:26] 有做 [01:52:27] 然后比你好 [01:52:27] 然后拿到满分这样子 [01:52:29] 所以 [01:52:30] 这个大概概念是这样 [01:52:32] 那我们会给你几个action [01:52:34] 几个action [01:52:35] 那前面 [01:52:36] 很简单的有送分题啊然后也有用 [01:52:39] 简单的 [01:52:40] 已经trend好的model [01:52:43] 已经trend好的embedding来做一些 [01:52:45] 呃 [01:52:46] 呈现啊分析啊预测啊 [01:52:48] 然后后面四个是你自己trend [01:52:51] 拿wikidump的data [01:52:53] 自己trend一个embedding [01:52:55] 然后再做同样的事情这样子 [01:52:58] OK [01:52:58] 后面有几个 [01:53:00] 这个这个档案有几个to do的 [01:53:03] sample code [01:53:04] 就是那个temporary [01:53:06] 那 [01:53:08] 这个捐信呢是一般 [01:53:11] 在做nlp还蛮常用的一个套件 [01:53:14] 这是 [01:53:16] 他有现成的很多做nlp的套件这样子 [01:53:19] 像这边你直接可以 [01:53:21] 可以呼叫这growback的model这样子 [01:53:27] OK [01:53:28] 然后 [01:53:29] 就一步一步啊其实 [01:53:30] 真的很手把手 [01:53:32] 就是 [01:53:33] 就可以这样子 [01:53:34] 当然有以前有同学问说他没学过python [01:53:38] 会不会很辛苦 [01:53:41] 可能会有点辛苦 [01:53:42] 如果 [01:53:43] 你用c的想法来想python [01:53:46] 一开始会很不习惯这样子 [01:53:48] 但是 [01:53:50] 做久了你就会 [01:53:52] 就会 [01:53:53] 就还好 [01:53:54] 我觉得应该还好 [01:53:54] 因为逻辑都差不多 [01:53:57] 那这个是可能 [01:53:59] 画出来的 [01:54:00] 就是第3个to do [01:54:02] 就是画出整个 [01:54:03] work vector [01:54:04] 你就是 [01:54:05] 你拿那个 [01:54:06] task的data去把它做 [01:54:09] tsne这样子 [01:54:11] 当然你说老师tsne不好这样我要拿别的 [01:54:14] 来做也可以 [01:54:15] 但是至少你要tsne这样子 [01:54:17] 你可以做别的然后比较这样子 [01:54:20] 因为它本身 [01:54:22] 就 [01:54:22] 因为降维的东西本身就会有点误差 [01:54:25] 所以你也可以比较这种 [01:54:27] 降维的方法的差距这样子 [01:54:30] 然后另外做自己train [01:54:34] 这个是我们有一个wikidump的data [01:54:37] 这是公开的 [01:54:39] 那 [01:54:40] 它长相长这样 [01:54:42] 那也不要担心这个 [01:54:44] 怎么处理 [01:54:44] 其实 [01:54:45] 我们都有帮你处理的这样子 [01:54:47] 那 [01:54:51] 这个 [01:54:53] 你要自己下载 [01:54:54] 以前会遇到一些问题就是 [01:54:57] 我记得第一年遇到一个问题就是大家载不完了 [01:54:59] 因为 [01:55:00] 好像摆在 [01:55:01] 摆在哪里 [01:55:02] 然后 [01:55:03] 系上的频宽怎么样这样子 [01:55:05] 然后 [01:55:07] 不知道 [01:55:08] 刚来对这边的网路不是很满意 [01:55:10] 对 [01:55:11] 因为现在我自己在管网路我就不会讲不好这样子 [01:55:14] 反正 [01:55:15] 就 [01:55:16] 可以改进这样 [01:55:17] OK [01:55:17] 但是现在应该不会有下载的问题 [01:55:19] 就是 [01:55:22] 我们 [01:55:23] 对 [01:55:23] 你做这个 [01:55:25] Gdown应该都还OK这样子 [01:55:29] 做下载下来 [01:55:32] 这边会有一个问题 [01:55:33] 因为我们只叫你sample20%的 [01:55:36] 这个wikidump的data [01:55:38] 那 [01:55:40] 我们的作业的设计都是在你个人的college的运算的quota可以跑得完的 [01:55:46] 我们并没有叫你做很大量的东西 [01:55:49] 所以以前有同学说老师我college [01:55:52] 根本memory不够 [01:55:53] 那 [01:55:55] 通常都是你的 [01:55:56] 程式写法有问题 [01:55:58] 你不要把百分之二的东西做出来 [01:55:59] 你不要把百分之二的东西做出来 [01:55:59] 你不要把百分之百的wikidump都载入 [01:56:00] 你不要把百分之百的wikidump都载入 [01:56:01] 然后自己再选百分之二 [01:56:03] 那个好像就是因为这样常常就是跑不前 [01:56:07] anyway你就是叫自己有一些比较有效率的写法这样子 [01:56:12] 这个是 [01:56:13] 后面的两个to do就是叫你用 [01:56:16] 现成的模型 [01:56:18] 去做这样子 [01:56:20] 你要拿这个data去train [01:56:23] 当然这边并没有到 [01:56:25] 这边是前处理 [01:56:27] 怎么train这个water vector [01:56:29] 并没有太多的 [01:56:32] 条件或是限制 [01:56:35] 也就是说 [01:56:36] 你可以自己有一些变形 [01:56:38] 也可以自己有一些 [01:56:40] 看看 [01:56:41] 我这样给他乱搞一下 [01:56:44] 你可以自己做这样的事情 [01:56:47] ok [01:56:48] 然后train完之后 [01:56:49] 就把所有tutu做完 [01:56:51] 然后写这个报告 [01:56:53] 报告占45% [01:56:55] 这个报告其实 [01:56:58] 为什么要分 [01:56:59] 这么细呢 [01:57:00] 就是 [01:57:01] 因为报告太发散了 [01:57:03] 我们总要给大家一些方向 [01:57:05] 方向就是 [01:57:06] 你至少minimum requirement [01:57:08] 至少要能够做这些要能够写这些回答这些 [01:57:13] 当然这有点像是 [01:57:15] 帮你把要喂给AI的prong都写好了 [01:57:18] ok就把这个丢给 [01:57:20] AI他就帮你写 [01:57:22] 但是 [01:57:23] 我希望 [01:57:25] 就是虽然其实我们是 [01:57:27] 允许啦 [01:57:28] 其实也没有办法进来 [01:57:29] 就大家可以用AI来辅助 [01:57:32] 但是你一定要消化你 [01:57:35] 这个AI做了哪些事情 [01:57:37] 他的实验的分析是什么 [01:57:40] 甚至呢我们这边 [01:57:41] 今年多了一个是希望你能够把你的 [01:57:44] 额外的 [01:57:45] 实验的code [01:57:46] 都放上去 [01:57:48] 我不知道是放连结吗 [01:57:50] 就放 [01:57:51] notebook连结这样子 [01:57:54] 对就是 [01:57:55] 因为以前会发生一些事情啊就是 [01:57:59] 你就把这些 [01:58:00] 丢进 [01:58:01] 丢进AI然后他就告诉你说啊这个 [01:58:03] 做wall embedding [01:58:05] 容易遇到什么什么什么 [01:58:07] 然后 [01:58:08] 那有些人又多问了一些什么然后就做出一些漂亮的分析图 [01:58:12] 但是我根本不知道他有没有做这个实验 [01:58:15] 当然你要做这个实验你一样可以把coding去做没错但是至少 [01:58:20] 你会更深入一点 [01:58:22] 你会跟AI互动更多一点 [01:58:24] 然后你会 [01:58:25] 知道 [01:58:26] AI到底帮你做什么 [01:58:28] 我 [01:58:29] 我是希望你能够这个过程能够更 [01:58:32] 更多乱一点然后你可以知道 [01:58:34] 哦原来我跑这个 [01:58:37] 我给他的不同的参数不同的想法或是甚至语料我给他少一点 [01:58:41] 或是我们刚才讨论的OOV的问题 [01:58:44] 你做做看 [01:58:45] 也许就 [01:58:46] 就你可以看出一些东西 [01:58:50] 当然你也可以问问AI说这个我要得高分 [01:58:53] 我要做什么实验这样 [01:58:55] 也许你就 [01:58:57] 写了一个 [01:58:58] 100页的报告这样子 [01:59:03] 每次讲这个我都想到一个以前小时候看到漫画那个叫做天才儿童 [01:59:07] 他们是一个小学生 [01:59:09] 那小学生的 [01:59:11] 的那个 [01:59:13] 运动会呢越野障碍就是 [01:59:16] 不同 [01:59:17] 不同 [01:59:18] 不同年级的考试体 [01:59:20] 这样子我就从小一小二讲一直这样越野障碍这样一直 [01:59:24] 他们到最后一关是什么 [01:59:26] 就是写博士论文 [01:59:28] 就是什么用印度文写出印度的未来农业的发展这样 [01:59:32] 我就看到那些 [01:59:33] 漫画看起来很有趣 [01:59:35] 小学生在那边写 [01:59:36] 写这些论文这样子 [01:59:38] 就是他可以很深入啊就是在这个作业其实也可以很深入就是 [01:59:42] 你也可以去探讨一些东西 [01:59:45] 甚至 [01:59:46] 越搞越大就把刚才的MTEB的DataSet拿来 [01:59:50] 去跑跑看这样子 [01:59:52] 就是 [01:59:53] 我们会有一个Range会有一些Range在这边 [01:59:57] 希望还是可以拉开来看的 [01:59:58] 大家的插曲这样子 [02:00:00] 那只是说因为人数有点多所以我们还是有一些格式要求 [02:00:05] 就一定要照这个格式要求 [02:00:07] 那我们 [02:00:08] 因为 [02:00:10] 中间有一些部分还是会用AI来做简单的review [02:00:14] 所以你如果不符合这个规格 [02:00:17] 其实很容易就没有分数 [02:00:18] 那 [02:00:19] 这个我们都有写在这上面 [02:00:21] 那 [02:00:22] 当然 [02:00:24] 这个比较麻烦的就是 [02:00:28] 超习 [02:00:29] 那当然同学会说我们有讨论啊 [02:00:32] 讨论 [02:00:33] 但讨论总要写的时候要分开写对不对至少 [02:00:38] Prong也改一下吧 [02:00:39] 就是报告也不要长得一模一样这样子 [02:00:42] 心得也不要一模一样 [02:00:45] 讨论只是技术的讨论 [02:00:46] 心得讨论 [02:00:48] 对不对你总要有点差距 [02:00:50] 就是 [02:00:51] 不要这么像 [02:00:53] 其实 [02:00:56] 就不要太像了 [02:00:57] 因为 [02:00:58] 因为以前真的发生过 [02:00:59] 几乎一样 [02:01:00] 这个不是OK [02:01:02] 那不是 [02:01:03] 这个其实我们为了要 [02:01:06] 让有些同学不得已被人家抄 [02:01:08] 我们 [02:01:09] 给他一个条件是你被抄你一样是0分这样 [02:01:12] 所以你就可以跟同学说 [02:01:14] 不行 [02:01:14] 你这样太危险了 [02:01:17] 我们是 [02:01:19] 两份一样全都是0分这样子 [02:01:21] 所以 [02:01:23] 这么简单的作业就不要再抄了这样子 [02:01:25] OK这大概是作业我们已经放上去 [02:01:28] 然后 [02:01:29] 我们的作业就是今天announce [02:01:32] 我们就三周的时间 [02:01:33] 三周的时间其实时间很够啦 [02:01:36] 但是 [02:01:37] 学生通常是最后一周写 [02:01:39] 如果你最后一周再开始写 [02:01:41] 会有一点赶 [02:01:42] 会有点赶 [02:01:43] 那 [02:01:44] 那不过就看你自己的程度这样 [02:01:46] 如果 [02:01:46] 有些人觉得这很简单 [02:01:48] 那其实 [02:01:50] 他的 [02:01:51] loading没有到太多 [02:01:52] 但是如果你要写出一个好的报告多一点分析 [02:01:56] 是的确要花一些时间 [02:01:58] 好 [02:02:00] 这是我们的assignment 1 [02:02:01] 那 [02:02:02] 大家如果还有问题呢 [02:02:03] 可以在slido上问 [02:02:05] 那我们先休息一下 [02:02:06] 我们10分钟后再回来 [02:12:42] 我们继续上课 [02:12:43] 那slido有人问一些作业的绞交跟格式跟能不能做一些修改的问题 [02:12:49] 那 [02:12:49] 这部分细节我可能就请助教再回一下 [02:12:52] 因为 [02:12:53] 我们就有一个规范这样子 [02:12:54] 那 [02:12:56] 对 [02:12:57] 我们会同意一下 [02:12:58] 就怎么去 [02:12:59] 绞交这样子 [02:13:01] 好 [02:13:03] 那我们来看一下 [02:13:05] 这个W2的部分的投影片 [02:13:07] 那其实是有点延续我们Language Model接下来的东西 [02:13:11] 然后 [02:13:12] 我们会带一下说这个 [02:13:16] 用训练的方式 [02:13:18] 我们看W2Vector是一个很简单的一个2 layer的一个NN嘛 [02:13:23] 那我们能不能有聪明一点的模型 [02:13:25] 像大家所知啊STM的东西 [02:13:28] 他们当时的想法到底是什么 [02:13:32] 好 [02:13:33] 那其实这前面的开场比较像是还是让大家自己要先反思一下做这件事情 [02:13:39] 就是 [02:13:41] 不要太 [02:13:42] follow这种本来教科书上的想法说我们现在要 [02:13:47] 要train模型 [02:13:49] 要用这种比较 [02:13:51] sequential的model [02:13:53] 所以要用RNL STM [02:13:55] 你就要 [02:13:56] 就 [02:13:58] 知道 [02:13:59] 他是这样做但是你可能要先知道为什么 [02:14:02] 这时候到底是发生什么事为什么需要这个 [02:14:06] 然后为什么 [02:14:08] 这个方法是可以解决这个问题的 [02:14:11] 我觉得 [02:14:11] 多往这样的回去想像 [02:14:14] 你比较可以知道这个 [02:14:16] 这个问题跟solution之间的matching [02:14:20] 好 [02:14:21] 那 [02:14:23] OK [02:14:25] 前面这一页讲的我觉得比较像是说 [02:14:28] 当你 [02:14:29] 你未来学到这些AI 学到这些技术的时候其实你 [02:14:33] 面对一个真实的 [02:14:34] 场域 [02:14:36] 其实你并没有人告诉你SOP [02:14:38] 没有人告诉你说这时候要怎么样 [02:14:40] 虽然现在好像也 [02:14:41] 几乎 [02:14:43] 大家的起手式SOP都 [02:14:45] 都蛮接近的反正就是 [02:14:47] 就是LM先做一波这样子 [02:14:49] 就先 [02:14:50] 丢进去呼叫一下或是API跑一下 [02:14:53] 看他到底做的好不好这样子能够用agent的方式做就做 [02:14:58] 做掉这样子 [02:15:00] 现在要自己finetune [02:15:02] 或是说做Lola或是 [02:15:04] 做什么reg [02:15:06] 我觉得比例有点降低了慢慢减少 [02:15:09] 因为现在的pondation model越来越强 [02:15:13] 不过可能 [02:15:14] 有些问题 [02:15:15] 你要思考一下说 [02:15:18] 我 [02:15:19] 我是一个 [02:15:21] 有supervised [02:15:22] 额外supervised data [02:15:24] 还是怎么样 [02:15:26] 我这样的应用以前这样的应用 [02:15:29] 做问答的 [02:15:30] 做新闻分类的 [02:15:32] 或是做 [02:15:33] 使用者的 [02:15:34] 意图的分类的 [02:15:36] 我其实100以前的做法就是标注 [02:15:39] 用人类的知识标注一些资料然后硬券模型了解这些标注的资料 [02:15:45] 只要你的训练资料跟未来资料的分布是一样的话 [02:15:50] 那就OK解决掉问题 [02:15:52] 但是 [02:15:53] 常常就是 [02:15:54] 不太一样 [02:15:55] 或是说你trend模型不是这么align到你的 [02:15:59] trending的data这样子 [02:16:02] OK [02:16:03] 那 [02:16:04] �但是我们现在面对到的就是 [02:16:06] 那其实我们可能会更常遇到的是没有 [02:16:10] 没有trendingdata [02:16:11] 就像我前面trend那个 [02:16:13] 这个embedding一样 [02:16:14] 其实是没有trendingdata的 [02:16:15] 你就要自己想像 [02:16:17] 我的unsupervised的trending要怎么做 [02:16:20] 我要自己设计trendingdata还是 [02:16:22] 用 [02:16:23] 什么样不同的任务 [02:16:25] 来训练这个模型 [02:16:26] 会 [02:16:27] 别的任务这样子 [02:16:30] 所以这个跟学习跟你自己在解决问题的测试 [02:16:34] 这个也会有点关系的 [02:16:36] 那我想 [02:16:39] 我们这边 [02:16:40] 这一章其实前面会从language model开始带 [02:16:43] 所以才会说跟 [02:16:45] 第一章的后面overlap是有的这样子 [02:16:49] 那 [02:16:50] 其实你要想说 [02:16:51] 我们刚才讲那些算那些几率啊 [02:16:54] 算那些东西 [02:16:55] 到底他的 [02:16:56] 他当时的 [02:16:57] 痛点是什么 [02:16:58] 为什么要去算那些property [02:17:01] 所以有点像是说如果我要做一个 [02:17:04] 问答 [02:17:05] 就是一句话后面接着一句话 [02:17:08] 或者是要叫电脑自己去写出一个文章 [02:17:12] 或是要跟我聊天 [02:17:14] 那他不就是有一个input要输出一个output吗 [02:17:18] 就是我是 [02:17:20] 要能够去生成 [02:17:22] 这个句子的东西 [02:17:24] 所以 [02:17:24] 这个language model的想法这种property的想法才会在那个时候就 [02:17:29] 大家觉得 [02:17:30] 应该要做这些事情 [02:17:31] NLP应该要做这样的事情 [02:17:34] 这个图就是我们 [02:17:35] 今天前面有讲到的 [02:17:36] 就是有用到的部分 [02:17:38] language model我想 [02:17:40] 这个 [02:17:41] 这是 [02:17:42] 简单的例子 [02:17:43] 就是query log [02:17:44] 就是前面的 [02:17:46] 前面的字词不一样后面 [02:17:49] 产生的东西的排序就不同这样子 [02:17:53] 虽然Google的这个资料其实是来自于query log [02:17:57] 不见得是俗而语调 [02:17:59] 但是其实也很接近这样子 [02:18:02] 当然 [02:18:03] 这个前面我们算那个语言模型算property的 [02:18:08] 其实你可以自己做 [02:18:09] 你可以自己拿这个这是周杰伦的歌词来做 [02:18:12] 然后可以算property [02:18:15] 但是 [02:18:16] 语料库没那么多 [02:18:18] 如果你只拿单一的歌曲的语料来做的时候其实 [02:18:22] 很难算出一些 [02:18:23] 很好的分布这样子 [02:18:26] 基本上他就是follow language model的想法在做这样一件事情 [02:18:31] 那比较 [02:18:32] 从以前的角度来看 [02:18:33] 从我们 [02:18:35] 我有大量语料库的角度 [02:18:37] 我在算这些东西的时候 [02:18:39] 以前我们会用所谓的n-gram的方式 [02:18:42] 那n-gram其实你常看到这个n-gram其实就是 [02:18:46] 我有 [02:18:47] n个字所形成的 [02:18:50] 一个片段 [02:18:51] 那 [02:18:52] 这个东西以前在做 [02:18:54] IR或是在做简单的NLP其实 [02:18:57] 其实大家都会 [02:18:58] 标准这个好你是用1-gram [02:19:00] 5-gram [02:19:00] 3-gram [02:19:01] 或者说你真的做到n-gram [02:19:03] 其实不太会做到n-gram [02:19:06] 除非是这个 [02:19:07] 这个像Google [02:19:08] 当初他们在做搜寻引擎的时候其实是基本上是n-gram的index [02:19:13] 然后他们也release一个 [02:19:16] 其实当初Google有release一个n-gram的dataset [02:19:19] 这个dataset一release出来这个当初做资讯检索的如获至宝 [02:19:24] 因为他其实就是从 [02:19:26] 语料库里面去 [02:19:27] 切出那个 [02:19:29] 比如说四字词的这样的一个 [02:19:32] 统计分布 [02:19:33] 有了统计分布其实你拿那个来做断字系统 [02:19:37] 就非常好用 [02:19:39] 因为 [02:19:40] 出现频率很高就是应该要在一起 [02:19:45] 那这个名词就是1-gram [02:19:47] 或是叫uni-gram [02:19:48] 它就是单字词 [02:19:50] 就这个bi-gram tri-gram这样子 [02:19:53] OK [02:19:54] 那 [02:19:55] 如果一篇文章 [02:19:56] 我说我们是用n-gram来 [02:19:59] 做index [02:20:00] 或是说 [02:20:01] 我们是用n-gram来 [02:20:02] 表示这篇文章 [02:20:03] 其实它的概念 [02:20:06] 是从 [02:20:06] 1 [02:20:07] 到 [02:20:08] 长度为n [02:20:09] 就是文章 [02:20:10] 100个字 [02:20:11] 那这个n就是100这样子 [02:20:13] 所以它会 [02:20:15] sliding window是1的 [02:20:17] scan一遍有这么多token [02:20:19] 2的 [02:20:20] 再scan一遍也有这么多不同的字这样子 [02:20:23] 所以你可以想像这个n-gram一出来之后那个我的片段我这些 [02:20:27] 这些gram会非常的多样这样子 [02:20:29] 当然有一些会重复没错 [02:20:31] 尤其是一些常见的字会重复 [02:20:33] 但是就是用这种方式来表示 [02:20:36] 因为我们根本不知道使用者想找的是 [02:20:39] 什么样的表示 [02:20:40] 就是 [02:20:42] 这个 [02:20:42] 有些很长的概念但是有些很短它也有代表同样的意义 [02:20:48] OK [02:20:49] 因为这样的pattern [02:20:51] 这样的组合 [02:20:52] 其实它都有它的 [02:20:54] 特殊的意义就像我前面讲那个莎士比亚的pattern一样 [02:20:59] 无限猴的例子 [02:21:01] 那我这边在用这个例子 [02:21:03] 这是一个 [02:21:04] 叫做linguistic signature [02:21:08] 就是 [02:21:08] 语言学上的这种 [02:21:11] 特征或者是签名的概念 [02:21:14] 这个是 [02:21:15] 当做一个故事啊这个这应该大家都认识吧 [02:21:18] 写哈利波特的作者 [02:21:20] J.K Rowling [02:21:22] 那 [02:21:22] 这个人 [02:21:24] 有谁知道这个人是谁 [02:21:31] 对我们应该要 [02:21:33] 鼓励线上的我们要做一个问答这样子 [02:21:36] 然后立刻 [02:21:37] 不过你们大家立刻 [02:21:38] 搜寻一下Google就知道了 [02:21:39] 这个其实是一个假的虚名 [02:21:44] 就是J.K Rowling当初他自己伪造的一个另外一个作者 [02:21:48] 另外一个笔名这样子 [02:21:51] 那 [02:21:52] 就是 [02:21:54] 就是这样啊这个 [02:21:55] 他其实非常厉害J.K Rowling [02:21:58] 得了很多奖 [02:21:59] 他写了哈利波特这样 [02:22:02] 后来他觉得 [02:22:04] 大家都把他 [02:22:06] 捧得太高这样子所以他觉得这个 [02:22:09] 已经没有什么挑战的意义 [02:22:10] 所以他就 [02:22:11] 另外再用这个笔名 [02:22:13] 自己去投稿 [02:22:15] 写了一个 [02:22:16] 小说 [02:22:17] 去投稿这样子 [02:22:19] 然后瞬间这个 [02:22:21] 这个译文界炸裂 [02:22:23] 哇这个人非常厉害啊这个年轻的这个作家 [02:22:27] 写这个 [02:22:29] 这个文笔之好这样这样然后就得了什么奖 [02:22:33] 然后 [02:22:36] 然后后来呢 [02:22:37] 其实这个故事可能要再看一下 [02:22:39] 有点忘记是他自己承认 [02:22:41] J.K Rowling自己承认说那个就是我这样子 [02:22:44] 还是说因为后来就有人去分析啊因为大家觉得说怎么可能那么厉害这样 [02:22:50] 就像你突然会发现说 [02:22:51] 某一个 [02:22:52] 某一个网路也不知道是谁的突然写了一大堆的natural paper这样子 [02:22:57] 他也不知道是来自哪个学校 [02:22:59] 就觉得很怪这样不太可能会发生这种事 [02:23:02] 所以就会有人去分析说啊那这个人到底 [02:23:05] 是什么就做了 [02:23:07] 去去 [02:23:09] 这个这个是一个学者啊就做了一个用这个软体去分析 [02:23:13] 整个的 [02:23:14] 就是拿这两本小说 [02:23:17] 去分析各种各式各样子 [02:23:19] 包含是说 [02:23:20] 四字词的分布 [02:23:22] 然后还有整个最常用的字的频率 [02:23:26] 然后这个forens啊就是 [02:23:29] 习惯用哪些字的这样的一个长度的分布啊 [02:23:33] 然后跟pairwise的出现的频率之类的 [02:23:37] 哦 [02:23:39] 然后就用这个分布发现这两本小说 [02:23:43] 相似度相当的高 [02:23:45] 相当的高 [02:23:46] 所以 [02:23:47] 所以 [02:23:48] 后来就 [02:23:49] 就 [02:23:49] 就很浪费这样子 [02:23:51] 当然我不知道是他自己 [02:23:52] 自己先承认还是这个人先抓他出来这样子 [02:23:56] 但是 [02:23:57] 其实他也没做什么错事啊 [02:23:58] 只是说 [02:23:59] 他去 [02:24:01] 这个已经有点像现在很资深的教授但是他也去参加那个年轻教授的奖项那种感觉这样子 [02:24:07] 就是有点那个降维达的感觉这样子 [02:24:09] 但是 [02:24:10] 但是 [02:24:11] 你可以发现就是说其实可以用统计上语法 [02:24:15] 语法学上的统计的东西 [02:24:17] 就可以 [02:24:18] 知道一个人的风格 [02:24:20] 这个跟其实昨天 [02:24:22] 在国科会讨论是说 [02:24:24] 我们要不要用AI来抓这个 [02:24:28] 国科会计划 [02:24:29] 撰稿的东西 [02:24:30] 或者是说拿AI来detect [02:24:32] 审国科会计划人的 [02:24:35] 评论是不是用AI写的 [02:24:37] 这件事当然其实在 [02:24:39] 在 [02:24:40] 现在的paper review的 [02:24:42] 整个society都已经非常吵得非常严重 [02:24:46] 因为像 [02:24:47] 像 [02:24:47] 这个今年ICML就有抓那个paper review是用AI做的 [02:24:53] 那个 [02:24:53] 那个 [02:24:54] 惩罚很重 [02:24:55] 直接你的paper都被累卷 [02:24:58] 那这件事当然其实 [02:24:59] 很难去避免 [02:25:00] 说实在的因为现在paper实在太多要review要看那么多的东西不太容易 [02:25:05] 大家都还是会用AI辅助 [02:25:07] 但是我想大多数人 [02:25:09] 可能都还是会自己去消化一下那些内容 [02:25:12] 只是说有些人在写paper或者是审paper的时候可能都用AI [02:25:17] 那 [02:25:18] 现在其实也有一些工具 [02:25:20] 之后我们可能会提到 [02:25:21] 像什么 [02:25:22] 什么GBT ISO或者是什么东西 [02:25:25] 他就会告诉你说 [02:25:26] 这个东西pattern出来之后 [02:25:29] 其实他跟 [02:25:30] 他其实用模型去算 [02:25:32] 模型去算说用模型去看这篇文章 [02:25:35] 他的preparsity是多少 [02:25:36] 这是最 [02:25:37] 最阳春的辩论 [02:25:39] 这个方式这样子 [02:25:40] 他就可以知道说这个跟这个GBT写出来的很像风格很像这样子 [02:25:46] 那其实呢 [02:25:47] 这个只要你研究过大圆模型就知道说这个太容易了我就改几个字 [02:25:53] 甚至有学生很厉害就是 [02:25:55] 故意写一个错字这样子 [02:25:57] 因为他知道AI不会写错字 [02:26:00] 他故意写一个type这样子 [02:26:01] 然后老师看到type就说这是你自己写的 [02:26:04] 只有那个type是自己写的 [02:26:06] 其他都是AI写的这样子 [02:26:09] 他只要用这种方式他就可以破坏这整个分布 [02:26:13] 那这样整个算出来的几率或是所谓的preparsity [02:26:16] 就会拉高 [02:26:18] 拉高之后人家就会觉得这不是AI做的这样子 [02:26:21] 所以像 [02:26:23] 像各位如果写论文都会用 [02:26:25] 图书馆的turn in去 [02:26:27] 去检查那个 [02:26:28] 重复的比例 [02:26:31] 那turn in现在有提供AI的功能这样子 [02:26:34] 就是让你去判断你的论文是不是AI写这样子 [02:26:37] 好像一年要 [02:26:39] 卖学校 [02:26:40] 好几十万 [02:26:41] 这样子 [02:26:41] 我就觉得 [02:26:43] 不赖 [02:26:44] 就是根本做不到这样子 [02:26:45] 你随便给个数字 [02:26:47] 而且老师说 [02:26:48] 就算他真的很准他也没有办法百分之百去判断 [02:26:52] 这件事情 [02:26:54] 只要他有 [02:26:54] 落差 [02:26:55] 只要他的准确率不是百分之百 [02:26:57] 我们就很难用这个数字去驾驭说 [02:27:00] 你是用AI写的 [02:27:02] 他等下 [02:27:03] 真的错杀了怎么办 [02:27:05] 所以那一块其实现在其实是 [02:27:08] 不见得是 [02:27:09] 会被拿来当成一个评估的一个机制 [02:27:13] 不过其实你可以发现这是很久以前的 [02:27:15] 这个其实当初用这种简单的统计 [02:27:17] 就可以判断说这个作者 [02:27:20] 他的风格 [02:27:21] 其实是一致的 [02:27:25] 那我们刚才看到这些公式算条件几率 [02:27:28] 算code 这些东西 [02:27:30] 其实你大概可以算算 [02:27:31] 这种你只要有一个语要库进来 [02:27:34] 你就可以去算这些东西 [02:27:36] 去算这些 probability [02:27:38] 这是一个 [02:27:39] 我记得是什么 [02:27:40] 就是我们教科书上的例子 [02:27:42] 他就是有一个语要库 [02:27:43] 这个语要库应该是找不到 [02:27:45] 他就去算说 [02:27:46] 这个Bigrand count [02:27:49] Bigrand count [02:27:50] 就是 [02:27:52] 一起 [02:27:53] 有点像co-occurrence的关系 [02:27:55] 所以I后面跟want [02:27:58] 然后这个want后面跟to [02:28:00] 这个量很多这样子 [02:28:02] 但这个字要我觉得 [02:28:03] 不是a balance [02:28:04] 就是这个count出来的这个字 [02:28:08] 那你说如果我要自己算这些字 [02:28:10] 那这些东西怎么做 [02:28:11] 就是得自己 [02:28:12] biblicoding一下 [02:28:13] 然后 [02:28:14] 叫 [02:28:15] Agent [02:28:16] 自己去抓个一万篇文章算一算 [02:28:18] 你就可以做这样的例子出来 [02:28:21] 然后呢通常会做一些事情 [02:28:23] 算做条件几率的话会做这件事情 [02:28:26] 会做smooth行 [02:28:27] 就是说 [02:28:28] 因为 [02:28:28] 几率其实不管你是 [02:28:30] 你是Bigrand或是Unigrand [02:28:33] 其实几率都是相乘 [02:28:36] 几率都是相乘 [02:28:38] 你如果前面几率很高然后突然有 [02:28:40] 有一个 [02:28:41] 像这种0的 [02:28:42] 像这种0的 [02:28:43] 那这0代表什么 [02:28:45] 0代表是说 [02:28:46] to [02:28:47] 在你的语效库里面 [02:28:48] to后面不会跟want [02:28:50] 就是非常肯定的告诉模型说 [02:28:54] to后面 [02:28:55] 不会出现want [02:28:56] 他就会告诉你几率是0 [02:29:00] 所以你不管前面几率再高 [02:29:02] 算一算 算到这边 0 [02:29:04] 那 [02:29:05] 几率相乘就是0这样子 [02:29:06] 所以 [02:29:07] 通常不会这样做 [02:29:08] 除非你说 [02:29:10] 我已经看完人类所有的文献 [02:29:12] 他就是不会相比 [02:29:14] 这样所以在这里 [02:29:15] 但因为我们通常语料不会很多嘛 [02:29:18] 所以我们要避免这种files [02:29:20] 所以我们会加一些这种 [02:29:22] 这种noise [02:29:23] 或是小小的noise [02:29:24] 最简单就是加1 [02:29:26] 就把所有a大家都会出现过一次 [02:29:28] 加1在几率的计算上你会发现normalize之后 [02:29:32] 他会有一点子但是值很小 [02:29:35] 值很小 [02:29:36] 值很小的好处是 [02:29:38] 虽然乘起来 [02:29:39] 会整个下降没错 [02:29:40] 但是他不会变成0 [02:29:42] 不会变成0就有机会了 [02:29:44] 就有机会了 [02:29:45] 比如说 [02:29:48] 我说我们这学习四个作业 [02:29:51] 我们的期末分数是四个作业相乘这样子 [02:29:54] 然后取logan normalize [02:29:56] 那你说那我有一次没交 最后就是0 [02:29:59] 对不对 [02:29:59] 那如果用相加就不会有这个问题 [02:30:02] 不过anyway [02:30:03] 几率的做法我们常常会做一点这样子的动作 [02:30:08] 好 [02:30:09] 这是 [02:30:10] 算出来的probability [02:30:11] 其实你可以再更延伸一点 [02:30:13] 你可以再去说 [02:30:14] 那我 [02:30:16] 算出这些co-occurrence的关系的时候 [02:30:19] 我们在 [02:30:20] W1的后面头一面不是告诉你说那我就可以算这种Bigrant的 [02:30:24] language model就是 [02:30:26] 我去算这一句 [02:30:27] 这个字加这个字 [02:30:29] 再这个字再这个字 [02:30:30] 然后我就可以把这个条件几率把它乘在一起 [02:30:33] 就是i want to eat什么 [02:30:35] 然后我就可以把这个i后面接1的几率多少 [02:30:39] want后面接2的几率是多少 [02:30:40] 那我就可以一路的去算下来去算出 [02:30:44] 最后它的输出 [02:30:45] 的probability是什么 [02:30:48] 你就可以去做这样的事情 [02:30:50] 那就是条件几率的计算 [02:30:52] 那这个 [02:30:53] 就是很基本 [02:30:55] 所以 [02:30:55] 当你想做 [02:30:57] 这句话 [02:30:58] 后面 [02:30:59] lat [02:31:00] 后面会跟着 [02:31:02] 的一个probability [02:31:03] 那你就去算这个count [02:31:05] 在你的语调库这个出现次数 [02:31:08] 后面 [02:31:09] 接着这个lat [02:31:10] 后面接着的count [02:31:12] 你这样一除 [02:31:13] 就可以算出这个probability [02:31:16] 当然你也可以把它拆解 [02:31:18] 你也可以把它拆解 [02:31:19] 因为 [02:31:20] 你在算这个时候 [02:31:21] 你的语调库 [02:31:23] 没有出现 [02:31:23] 或只出现一次的时候 [02:31:25] 就没办法算 [02:31:26] 所以你可以把它拆解 [02:31:28] 说我就是两两 [02:31:30] 然后去预测 [02:31:31] 下一个字 [02:31:34] 所以它会 [02:31:35] 跟 [02:31:35] 就我们刚才 [02:31:36] 前面 [02:31:37] 第一张 [02:31:38] 举的那个例子 [02:31:39] 我就可以两两然后去看 [02:31:41] 最后我这样预测这个字之前 [02:31:45] 到底我累积下来的这个两两的probability到底长什么样子 [02:31:50] 我就可以再去predict [02:31:51] 我下一个字的probability [02:31:54] 但是基本概念 [02:31:55] 所以 [02:31:56] 你大概可以想像说 [02:31:57] 那我的语调库如果 [02:31:59] 不够 [02:32:00] 或者是没看过字的时候 [02:32:03] 我需要做一些怎么样调整 [02:32:05] 这个以前在做这种 [02:32:06] probability-based的时候的作法 [02:32:09] 都要探讨的部分 [02:32:13] OK [02:32:14] 这个 [02:32:15] 这个就是 [02:32:15] 刚才讲的如果是一个 [02:32:17] 这样的我只看 [02:32:20] 字跟字 [02:32:21] 单一的关系的时候 [02:32:23] 我先看第一个字的probability [02:32:25] 然后第二个字呢 [02:32:26] 第一个字发生之后 [02:32:28] 第二个字的probability [02:32:30] 接下来 [02:32:31] 它这边更复杂 [02:32:32] 我就是从 [02:32:33] 第一个字第二个字发生之后 [02:32:35] 第三个字发生probability [02:32:37] 那你可以把这个公式展开了 [02:32:39] 那分母就是 [02:32:41] 两个字 [02:32:42] 然后分子就是三个字 [02:32:43] 所以 [02:32:44] 你的Corpus里面有统计这n grand count的时候 [02:32:48] 你就可以算所有的东西 [02:32:50] 但是你会发现 [02:32:51] 你这个东西其实它的 [02:32:53] 它出现次数就越少 [02:32:55] 因为那么多字 [02:32:56] 那就可能只出现一两次的时候 [02:32:59] 你这个 [02:33:00] 的 [02:33:01] 影响到前面的东西 [02:33:02] 要 [02:33:03] 看要怎么去调整这样 [02:33:05] 但不同的 [02:33:06] 文献的分布其实你会做不同的调整 [02:33:09] 这是n grand的model [02:33:11] 做这样的事情 [02:33:12] 但是如果简化一点 [02:33:14] 不要这么麻烦 [02:33:15] 这个实在太难搞 [02:33:17] 那我们就做bigrand的model [02:33:19] bigrand就是我现在这个字呢 [02:33:21] 只会跟前一个字有关 [02:33:23] 所以我在算probability的时候 [02:33:25] 只看前一个字是什么 [02:33:26] 前一个字是什么 [02:33:28] 那你说这个 [02:33:29] 这个应该 [02:33:31] 不work [02:33:31] 但是以前就是这样 [02:33:33] 这样就很厉害这样子 [02:33:35] 更不用想去做这些事情 [02:33:37] 不是它不好算 [02:33:39] 因为你 [02:33:39] 根本没办法统计这些 [02:33:41] 这个东西其实是 [02:33:43] 很有bias的probability [02:33:44] 因为你的corpus很少这样子 [02:33:50] 好 [02:33:51] 那这边就比较一个formal的定义 [02:33:53] 就是虽然大家都提到有大语的模型 [02:33:56] 那language model在教科书上 [02:33:59] 这是一个很古老的turn [02:34:01] 其实我们以前 [02:34:02] 尤其是如果你是 [02:34:05] 不是你是 [02:34:06] 老师是从这个 [02:34:08] 做搜寻语行开始进入NLP的这个年代 [02:34:10] 其实也算是半入期 [02:34:12] 因为以前做NLP的人其实 [02:34:14] 跟做搜寻的NLP的人是 [02:34:17] 想法手法是不太一样 [02:34:19] 那不见得会用language model [02:34:22] 就是以前 [02:34:24] 如果NLP是用language model来做的时候就觉得 [02:34:27] 脑袋就浮现几个字 [02:34:29] 它是做比较理论的这样子 [02:34:31] 因为就要算一堆的几率 [02:34:33] 就要在那边计率 [02:34:34] 玩来玩去这样子 [02:34:36] 当然paper是比较好写的 [02:34:39] 教科书上的讲法就是这样子的 [02:34:42] 就是 [02:34:43] 我有一个model [02:34:45] 就是一个架构 [02:34:46] 一个可 [02:34:48] 重现 [02:34:48] 可度量 [02:34:50] 可计算的方式 [02:34:52] 他可以去assign这个字的 [02:34:56] 这个一串字的priority [02:34:59] 叫做language model [02:35:01] 那这件事情当然你觉得我讲这句话 [02:35:03] 只要是人听得懂的话 [02:35:06] 他的几率就会很高 [02:35:07] 因为就是符合人类的语言的priority [02:35:12] 但是我如果现在 [02:35:13] 可能有些人 [02:35:15] 你会发现 [02:35:16] 有些人在做 [02:35:18] 做那个病人 [02:35:19] 就是那种 [02:35:20] 比如说是 [02:35:21] 语言障碍的 [02:35:23] 或是那种生病的中风 [02:35:26] 过后的那种语言 [02:35:27] 他其实他的pattern [02:35:29] 会跟 [02:35:30] 一般的 [02:35:32] 人类的语言trade model不太一样 [02:35:34] 因为他可能会中断 [02:35:36] 或者是有一些语助词的东西 [02:35:39] 会出现 [02:35:40] 或是他的片语的 [02:35:42] 他脑部受损之后 [02:35:44] 他有一些的concept会不见 [02:35:46] 所以他用的词汇会变少 [02:35:48] 那那个东西兜出来的model [02:35:50] 就会跟你正常人的model又不一样 [02:35:53] 所以 [02:35:54] 其实你可以想像 [02:35:56] 反正我就是based on原来的语要库 [02:35:58] 做出来这样的一个分布 [02:36:02] 所以他就可以帮助 [02:36:03] 我去assign说 [02:36:05] 这句话到底是不是人说的这样子 [02:36:08] 是不是符合我们现在想看的language [02:36:11] 所以 [02:36:12] 你可以想像当你把中文 [02:36:15] 或是英文 [02:36:17] 就像我刚才讲的h [02:36:19] 把h成一些symbol不一样的symbol [02:36:22] 虽然你看不懂 [02:36:24] 但是因为是一对一的mapping [02:36:26] 你在算这propriety的时候 [02:36:28] 其实他也跟人类的languagemodel是一样的 [02:36:31] 这是你看不懂 [02:36:32] 这是最简单的编码 [02:36:34] 密码就是这样做的 [02:36:36] 但是一对一啊所以很容易被破解就是这样 [02:36:42] 标准上来讲我们应该要做到angry [02:36:46] 就像刚才这个 [02:36:49] 因为这个字会跟前面的字都有关系这样子 [02:36:53] 所以这个就很难算 [02:36:55] 你一定要有语料 [02:36:56] 然后你要大量的 [02:36:58] 这个 [02:37:00] 统计上的计算这样子 [02:37:02] 但是后来发现这个实在太难 [02:37:04] 不好算也没那么多资料这样子 [02:37:07] 所以就 [02:37:07] 好吧 [02:37:08] 那我们就不要统计就学 [02:37:11] 就是 [02:37:12] 在你有限的资料里面 [02:37:14] 去学会一些东西 [02:37:16] 那这个东西你会觉得 [02:37:18] 这个都做不好了 [02:37:20] 他能学得起来吗 [02:37:22] 这个就跟你们在做机器学习一样 [02:37:24] 就是 [02:37:25] 你怎么可能用那几笔资料 [02:37:28] 比如说班上同学 [02:37:30] 学习表现 [02:37:32] 我就拿这50笔资料 [02:37:34] 我就可以Chain一个model [02:37:36] 这个model [02:37:39] 就可以预测以后班上同学的表现 [02:37:42] 就是如果这个model非常准 [02:37:45] 就可以预测说 [02:37:47] 上完三个礼拜我就可以知道说 [02:37:49] 这位同学你应该会被Done掉这样子 [02:37:52] 现在其实都有这样的东西 [02:37:54] 尤其是做HR [02:37:56] 其实 [02:37:57] 大家可能都不知道现在 [02:37:59] 现在的 [02:38:01] 大公司在面试的时候 [02:38:02] 其实都有AI在辅助 [02:38:05] 都有AI在辅助 [02:38:07] 不要不是说AI会问你问题 [02:38:09] 然后你要答 [02:38:10] 他们会统计 [02:38:12] 你回答的字 [02:38:14] 的分布 [02:38:16] 然后他们会 [02:38:17] 以前有一个Database [02:38:19] 会知道说 [02:38:20] 以后表现好的人 [02:38:22] 当初在面试的时候都会提到什么样的关键字 [02:38:27] 当然不是 [02:38:28] 不是嘴炮那种关键字 [02:38:29] 而是他可能会 [02:38:31] 讲到一些技术啊 [02:38:32] 讲到一些 [02:38:33] 非常深入的关键字 [02:38:35] 就是同样的问题底下以前那些 [02:38:38] 进公司表现很好的这些回答的语料 [02:38:42] 他们都统计 [02:38:43] 所以大家可以看看你这次回答 [02:38:45] 虽然听起来好像还回答不错 [02:38:47] 但是发现 [02:38:49] 你的 [02:38:50] 用语 [02:38:51] 跟以前那些 [02:38:53] 没进来的 [02:38:53] 或是进来之后后来被fire的 [02:38:56] 都很像 [02:38:57] 那你可能就不会被考虑这样子 [02:38:59] 所以这个东西其实现在都有在使用 [02:39:02] 所以 [02:39:04] 对所以 [02:39:05] 好好回答 [02:39:08] 只是说你当然会觉得他们有BIOS [02:39:11] 因为以前的 [02:39:12] 进去表现 [02:39:13] 很好的 [02:39:14] 讲这些话并不代表没有 [02:39:16] 没有讲的 [02:39:17] 人就表现不好 [02:39:18] 因为training data本来就有 [02:39:21] 这种 [02:39:22] 不足的问题 [02:39:24] 但是我们还是希望说我们有一个模型 [02:39:27] 只要为了资料够多一点的时候 [02:39:29] 他可以学会这件事情 [02:39:31] 因为 [02:39:32] 这也是 [02:39:34] 必经之路嘛因为没办法做这件事只好做这样 [02:39:38] 好 [02:39:39] 那我们今天就看到这一个这个 [02:39:41] 这个其实非常重要就是 [02:39:43] 这个字本身就是困惑的意识 [02:39:46] 那 [02:39:46] 他 [02:39:47] 他实际计算什么 [02:39:49] 其实就是我们刚才在算这些东西啊 [02:39:52] 你会发现 [02:39:53] 如果 [02:39:54] 你把 [02:39:55] 成人的讲话的pattern [02:39:58] 训练出这样的一个分布 [02:40:00] 然后呢你把一个小朋友讲话的pattern [02:40:04] 去算这个几率 [02:40:05] 他几率就很低 [02:40:06] 因为成人不会这样讲 [02:40:09] 就是 [02:40:12] 第一个小朋友可能很喜欢讲那个连字词 [02:40:16] 同样的这个字 [02:40:17] 吃饭饭 [02:40:19] 就是类似就会讲 [02:40:20] 但是你不会跟你同学说我去吃饭饭 [02:40:23] 这个pattern就不一样 [02:40:25] 所以你在算这个几率的时候 [02:40:28] 某些人就傻了 [02:40:29] 你怎么会变成讲这种话 [02:40:31] 他就不了解你第2个饭的意思到底是 [02:40:34] 所以他就困惑这样子 [02:40:36] 所以这个概念是这样 [02:40:38] 那他其实计算上基本上就在算这个 [02:40:41] 这个字 [02:40:42] 你看到这些字 [02:40:43] 然后 [02:40:44] 接下来发现这个字 [02:40:45] probability的一个 [02:40:47] 可能性 [02:40:49] 所以困惑度越高表示说 [02:40:51] 你讲了 [02:40:52] 你讲了一句我以前没听过的话 [02:40:55] 那就是几率很低的意思 [02:40:57] 所以这个几率很低的意思 [02:40:59] 那他导述 [02:41:00] 你的困惑度就会高这样子 [02:41:02] 所以当然他 [02:41:06] 看你要不要normalize [02:41:07] 他其实有时候是非常高的 [02:41:10] 因为实在太困惑了 [02:41:12] 你可能 [02:41:12] 出车祸我不知道在讲什么这样子 [02:41:15] 有可能是这就是一般的讲法 [02:41:18] 就是没问题 [02:41:19] 几率是1这样子 [02:41:21] 当然有时候我们会normalize到一定的范围内这样子 [02:41:25] 这propriety其实是用来度量很多 [02:41:28] 由于是现在大圆模型的一个 [02:41:30] 很重要的工具 [02:41:32] 因为其实你可以想像他其实就是去看说 [02:41:35] 我劝完之后这个模型如果叫他讲话 [02:41:39] 他讲的话 [02:41:40] 跟人讲的话其实是一致的 [02:41:42] 那表示我模型有trend [02:41:44] 但是如果你哪一天说 [02:41:46] 老师说要fintune [02:41:47] 那我就拿我们资料去fintune [02:41:49] 那fintune完之后呢 [02:41:50] 好像可以讲我们 [02:41:52] 希望他讲的话 [02:41:53] 但是 [02:41:54] 他一般的人话讲得哩哩答答这样子 [02:41:57] 所以你会发现 [02:41:59] 你再去算你fintune后的模型 [02:42:02] 他的propriety [02:42:03] 会变很高就是他在decode的时候他的困惑 [02:42:07] 很高就是他不知道这时候要输出什么token [02:42:11] 他就 [02:42:13] 你的fintune过程就把他以前的 [02:42:17] 学会的东西都破坏掉的时候 [02:42:19] 他的propriety会升高 [02:42:21] 所以我们通常会衡量fintune的好坏 [02:42:24] 其实propriety是一个很 [02:42:26] 很好的一个指标 [02:42:28] 就说 [02:42:29] 你当然会 [02:42:30] 升高是 [02:42:31] 很有可能因为你 [02:42:33] 你的资料跟当初的 [02:42:35] Pretrend的LM的Pretrend资料比是差很多的 [02:42:39] 你只用少量资料来微调 [02:42:41] 当然模型有点会被你搞烂是一定的 [02:42:44] 但是你不要掉太离谱 [02:42:47] 你不要掉太离谱 [02:42:48] 所以 [02:42:49] 为什么你常看到paper去看说 [02:42:52] 尤其是fintune的东西 [02:42:54] 去做尤其是做深层任务的fintune的研究的时候他会去度量 [02:42:58] propriety就是我tune完之后 [02:43:01] 他至少还是讲人话 [02:43:02] 他至少还是讲 [02:43:03] 我们看得懂的东西这样子 [02:43:05] 然后计算部分就是这样这个东西其实在一般有用的训练其实也是 [02:43:11] 训练的过程也是一个 [02:43:13] 有些可能会把它当成是一个 [02:43:16] loss的逼近的一个指标在做这件事情 [02:43:20] 所以这个 [02:43:23] 你大概知道他其实就是去 [02:43:25] 去看我对我这个language model [02:43:28] 的 [02:43:29] 跟我现在要match的那个language之间的align的程度有多少 [02:43:35] OK [02:43:36] 但是通常你不会自己算 [02:43:37] 这个现在 [02:43:39] 这个直接呼叫直接告诉你这样 [02:43:41] 所以有很多研究都会用这个 [02:43:45] 就是尤其是看 [02:43:47] 比如说大圆模型的幻觉的时候 [02:43:50] 因为大圆模型其实还是为自己心虚吧 [02:43:52] 就是他这个不太懂 [02:43:55] 所以他的propriety在decode的时候会升高 [02:43:58] in general [02:44:00] 其实有时候他 [02:44:01] 他信心度很高但都是错的也有 [02:44:04] 但是有时候通常他不太有把握或是他 [02:44:07] 开始已经不知道在干什么的时候他这部分的信心度会拉高 [02:44:11] 所以这个就是一个指标 [02:44:12] 你可以去算propriety [02:44:14] 这只是one of的一个指标这样子 [02:44:19] OK [02:44:20] 好 [02:44:20] 那这个就我刚才提到一些意义就是他其实是用来度量 [02:44:25] 非不确定性的就是我现在在看这句话的时候跟我以前的model的align程度 [02:44:31] 其实不太一致的 [02:44:33] 那也是来评估我现在做 [02:44:36] 这个模型的表现尤其是像我去fine tune或者是说 [02:44:41] 我现在要去 [02:44:41] 去做什么任务的时候 [02:44:43] 其实他到底 [02:44:44] 对自己的信心度有多少 [02:44:47] 那当然也有是一个compression [02:44:49] 因为 [02:44:51] 为什么提到compression [02:44:52] 因为model本身 [02:44:54] 你可以想象人类这么大的语料库 [02:44:57] 我只要用 [02:44:58] 7个billion [02:45:00] 几个billion也算蛮多的就是我只要用几个billion参数 [02:45:05] 我就可以让他完全的去decode出人类说的文章 [02:45:09] 这某种程度上已经是一种 [02:45:11] 一种压缩的过程 [02:45:12] 就是把人类的nudge完全压缩在这整个参数的表示里面 [02:45:18] 所以压的好的 [02:45:19] 他propensity会低压 [02:45:21] 因为表示没有问题 [02:45:22] 表示没有arrow [02:45:23] 但是压的不好的就是 [02:45:25] 他decode回去 [02:45:27] 就很像你们图片在 [02:45:29] 解回原来图片的时候 [02:45:31] 发现就模糊了 [02:45:32] 或者是 [02:45:33] 那个就是 [02:45:34] 这个压缩的效率不好 [02:45:36] 这样子 [02:45:38] 这个大概是propensity的一些特性的 [02:45:41] 然后 [02:45:41] 那 [02:45:43] 那我们能不能用propensity来 [02:45:45] 判断 [02:45:46] 你们写的作业是不是AI写的 [02:45:48] 其实现在有很多detect AI的工具 [02:45:51] 就是去算propensity [02:45:53] 就是这个没错这就是我写的这样子 [02:45:56] 我信心度很高我没有困惑我认得出我写的东西这样子 [02:46:00] 所以这件事情是 [02:46:04] 现在detect的模型的或是系统 [02:46:08] 都是朝这个方向来做 [02:46:10] 但是你可以想象 [02:46:11] 你可以回去自己试 [02:46:12] 反正这里你也可以算出来 [02:46:14] 你可以在这个 [02:46:15] detect的东西 [02:46:18] AI自己做出来你叫他自己判断 [02:46:20] 他可能会判断90多 [02:46:22] 但是你把一个字的改掉 [02:46:24] 或是把一个字对掉或是 [02:46:26] 给decode就下降这样子 [02:46:28] 所以那个都很容易去调控这样子 [02:46:32] 好 [02:46:33] 我们今天就先上到这 [02:46:40] OK并不适合没有没有 [02:46:42] 没错有一点这个味道 [02:46:44] 其实也不是顶大的差距说实在 [02:46:48] 是 [02:46:50] 努力的差距 [02:46:54] 应该这样讲其实 [02:46:57] 等你去学会其实学习deep learning的 [02:47:00] 之后你再回过头来看 [02:47:02] 就不觉得 [02:47:05] 这个gap是有的 [02:47:07] 因为 [02:47:08] 说实在的现在这些code [02:47:11] 我们并没有叫你去写出detail的training的东西 [02:47:14] 但是的确你 [02:47:16] 你要有训练过的经验 [02:47:18] 不然你在写第1个作业时候 [02:47:21] 会有点辛苦没错 [02:47:22] 因为你根本不知道模型的训练是什么这样子 [02:47:26] 那当然我在CBUS里面的确也有提到说 [02:47:30] 最好还是要有基础学习跟深入学习的基础 [02:47:34] 只是说我没有把它列为很hard的requirement [02:47:38] 原因就是说 [02:47:40] 我觉得这些东西其实是很容易可以catch up的 [02:47:44] 对 [02:47:46] 这不是这跟顶大没有关系 [02:47:49] 这个顶大的学生也 [02:47:50] 都很废 [02:47:51] 大家也都是这样学过来的这样子 [02:47:54] 而且 [02:47:55] 其实有很多人会 [02:47:56] 会训练模型会跑deep learning [02:47:59] 其实他并没有懂这些东西 [02:48:01] 但是他会写package [02:48:02] 他会 [02:48:02] 他至少run过那个套件 [02:48:04] 其实就是这样而已 [02:48:05] 他并没有懂 [02:48:06] 更多这样子 [02:48:09] 在code lab上平均要执行多少时间合理 [02:48:13] 我也许 [02:48:14] 可以请助教提供一下他们以前的经验这样子 [02:48:18] 如果有跑过的 [02:48:22] 对我们可以列一下这个时间这样子 [02:48:25] 对具体截止日期就是从今天开始公布三周后这样子 [02:48:30] 我作业大概都是这样的一个时程 [02:48:33] 其实都是来得及 [02:48:36] 考试会着重作业跟上课内容 [02:48:41] 目前的课程没错对都比较 [02:48:44] 讲故事 [02:48:46] 所以 [02:48:46] 因为他本身我并没有用什么教科书 [02:48:49] 所以他并没有太多的step by step的技术的东西 [02:48:53] 对的确 [02:48:55] 可能会有很大部分是从作业 [02:48:58] 你做的过程 [02:48:59] 跟你的insight [02:49:01] 跟有一些 [02:49:02] 一些你 [02:49:03] 一定会做过就了解的细节去着手 [02:49:07] 不太会去考 [02:49:09] 只能举例不太会去考叫你算BM25这样子 [02:49:13] 这种东西这样子 [02:49:14] 对我们会有一个考试是 [02:49:17] 会排在应该是14周 [02:49:20] 对我在这两个礼拜会确认 [02:49:25] 我是写mid-term的但是其实是比较在期末 [02:49:28] 所以应该是14周的时候 [02:49:35] 好 [02:49:43] 好吧这个你应该下载就看得到了 [02:49:47] 是吧 [02:49:49] requirement [02:49:53] 因为 [02:49:55] 除了捐信的问题 [02:49:57] 另外其他的 [02:50:00] ok好你们再回复好了 [02:50:04] 捐信 [02:50:04] 他还有在维护吗 [02:50:06] 捐信 [02:50:06] 去年的时候有没捐 [02:50:08] 可是现在好像不捐 [02:50:09] 所以这个会在 [02:50:10] 发布到下 [02:50:11] ok好 [02:50:13] 对因为这些公司有些 [02:50:15] 捐信应该是还有但是有些你会发现有些套件你怎么一直没在更新或是 [02:50:20] 或是其实你有更别的选项 [02:50:23] 更新的选项 [02:50:26] 好我想就这样了当然 [02:50:29] 对 [02:50:30] 我是觉得 [02:50:32] 有我们有 [02:50:33] 这个code template其实是还好 [02:50:35] 还好 [02:50:37] 当然有时候如果你没有这些基础压力可能真的会大一点这样 [02:50:40] 不过我想就自己 [02:50:41] 自己判断这样子 [02:50:44] 好 [02:50:45] 没有其他问题我们今天就上到这边我们下课