七月在线公开课笔记-二十八-

七月在线公开课笔记(二十八)

人工智能—机器学习公开课(七月在线出品) - P6:标签传递算法 - 七月在线-julyedu - BV1W5411n7fg

。下面呢我们给出时间来简单的来跟大家聊一聊。标签传递算法。因为咱刚才一直讲的是。无监度分类。有些时候哈有些样本是。带标记的大多数是不带标记的对吧?这种就是半监督这种半监读方式,最简单的一种思路。

标签传递算法。并且标签传递算法是在实践当中用的哟。就是你比方说咱的微博那些数据做聚类。你比方说咱那个某一个网站,比方说是做电影的网站哈,然后我想对他对用户的评论做做分类,做专确传递,对吧?

也是可以这么去做的。他想法就是将标记的样本,他不是有标记吗?OK这个标记我通过一定的概率传递给那些没有标记的那些样本,最终让所有样本都有了这个概率值,有了这个样本值就完成了这个操作哈。

这就是我的标签传递算法。很简单,我们来看一下啊。标程地给另一个数那个一个data,这是我们的数据。我们假定前A个是已经有标签的,后面是没有标记的,怎么做呢?还是跟刚才差不多算一个我们的转移概率。

这个data给个P这个这个东西跟刚才的那个算。呃,拉式矩阵几乎是完全一样的东西,照搬过来就行。大家读着代码就好了啊,就是一样的对吧?几乎就也就直接差最后那个加一减1,其他都完全一样。就就不看了啊。

总之你求出。转移概率算的就是DI号跟DJ号的相似度,对吧?然后给定这个矩阵之后呢,我们是算一下这个样本的数目,样本的维度,然后我们假定说迭代100次,对吧?然后怎么算呢?

这个I从第A号是第一个没有标记的,到最后一个M减1做标记。我们就算一下第I号这个值,它应该的标签是谁谁应该把标签传递给第I号这么一个函数哈。然后这个函数在这儿。然后呢,我们先看这个。框架哈给出这J之后。

让J的这个标签传递给这个label,注意哈,J可能都没有标签哦,对不对?如果J这个标签给完之后,标签本身它都为零就算了。完了正常是大于零的某一个值,就把它的标签传递给DI号的这个样本值就是了。

而如何去算呃,某一个。对那个样本它的这个标签值呢很容易算哈,其实就是概率不是都有了吗?概率有了以后,我怎能算出它值来,我随机给一个从0到1的一个数。对吧我就去辨了一下这个数,它落在了哪一个范围以内。

落在哪儿,我就把那个值返回回去就可以了。大家体会一下这一块和这一块哈。这个东西是什么呢?我咱这个是咱在那个算法盘讲过一个就是N首歌歌的这个权值不一样。然后呢,我想随机选一首歌,就那玩意儿哈。

一样的东西就是或者给你三角形,三角形的大小不一样,随机选一个就那个玩意儿跟一样的就是。那套东西啊就是这个算了是累计概率哈,然后把它选出来就是了,选一个值上去,然后把它传过去,简单吧?

这就是所谓的标签传递算法。然后呢,这个就是标签传递的过程,这个是我给这初值哈,就是初值,我是这儿给了一些那个标记过的值,这儿给了一些标记过的值,这是初始情况。传递迭代一次,这不是time吗?

我把time这不能打出来啊,time等于一的时候,我打成图是长这样子的。然后做1次吊销产地就成这样了,20次就这样了,30次这样子40次就完成了。其实。就这么一个过程哈,它是标签不停的去扩散扩散。

最后把所有的值都把它传完,得到一个过程哈。所以这算法很简单,并且。他的时间复杂度很低,在实践当中用处就很广。因为我们实践当中不会去探讨用很复杂的那个算法可能用复很复杂,但时间复杂度不能太高。

对吧所以说这个算法是很好的一个东西哈,就你代码好简单,对不对?然后把它玩出来就是了。多说一句。带宽和淋域仍然会对这个算法造成影响。我做了两个环儿,把它叠在一起的情况哈,然后这儿给出几个样本来。

这儿给出几个样本,一个红的,一个蓝的哈。然后如果你的带宽给的不合适,或者淋域给的不合适的时候,传出来是会很别扭的。比方说假定哈我如果淋域给的特别小。他会发生什么现象呢?会发生可能这一半全是蓝。

这一半全是红。如果给的这个淋域又特别大的情况,就会发生右边这样的一个情况。就是它可能这块红那个大多数是绿的,然后到这儿呢就会发生这种。中间过度地带了,这个也是一样的,中间有过度地带,对吧?

不管是怎么去调,它的这个带宽和领域总是会有各种各样的情况发生哈。我想这个数据。呃。或许是通过调餐的方式已经搞不定了。我我个人认为哈。因为这种情况就是人来看,你都很难。你我要是说这个大圈和这小圈属于左边。

这个大圈和这小圈属于右边也是要对的,你也不能说它是完全错。对不对啊?就是我说这个环和左边这管从这儿拉一条线哈,左边全属于左边或右手流着他这也也也说得过去。虽然咱觉得这个圈是一个,这个圈是一个,对不对啊?

所以这个就说不清了,对吧?所以后面就需要其他的,或者是我们再配合其他内容再去做相应的这个内容哈。另外呢这是参考文献,尤其是这个第一篇,就是刚才说的基于密度最大值距离那个算法,它的那个参考文献哈。

大家可以把它很好很好搜哈。大家直接google一下,就能搜到这个文章,直接下载能得到它的PDF版版本。

人工智能—机器学习公开课(七月在线出品) - P7:分布式机器学习系统的设计与实现 - 七月在线-julyedu - BV1W5411n7fg

行,那我们开始吧。

呃,那个首先那个非常高兴啊能够那个来给大家讲这一次课,然后感谢区月在线。然后我这次的主要是给大家讲一下分布式积极学习的设计,以及我们在实践当中的一些运用。然后我大概简单自我介绍一下,然后我叫马超。

我是现在在北大读PHD,然后同时我现在也是在amazon,然后做一些关于MXnet分布式机器学习的工作。然后这个slics主要是给大家讲一下这么多年来,我们在分布式系统。

包括大规模机器学习上的一些应用以及就是经验吧,主要还是面向初学者。对。

那个我们都知道,因为现在。嗯,大家都说我们big data时代已经到来了,所以这张图就是展示了一个我们现在的互联网公司,嗯,每一分钟它可以处理多少的数据。当然这个这张图已经是2014年的了,所以就是。

他可能现在的我们的现在的数据可能已经比这个更高了。比如说举一个例子,呃,我们的facebook在一分钟可能会嗯会处理将近240万个user的 share。然后包括我们的youtube就是在一个小时。

我们可能会处理72小时的video,就是我们会上传72个小时的video数据啊,一1分钟不是1小时啊是一分钟。所以我们可以说现在的big data呃。

让我们的motionine learning这种技术变得就是越来越好用。为什么这么说?因为其实我们现在用的motionine learning的技术和比如说几十年前,他们做统计机器学习那些人。

我们在本质上这些机器学的机器学习的技术其实没有什么变化。但是由于这几年我们的大数据就是数据越来越多了。所以我们的机器学习算法,才能在这些数据上发挥非常好的效果。

所以说机器学习现在是一个非常重要的topic。在在我们这个b data领域。

嗯,这张图是展示了一下,就是imagenet,大家应该都知道,就做imagenet。我们做图像分类。近几年来的一个就是错误率的降低。就实大家可以看到,我们在2011年的时候。

我们的错误率还是将近是25%的。只向也就如果你是一个25%的错误率,实际上相当于你完全不能用它来就是在我们的实际中做什么有用的应用。但是大家可以看到,现在到15年的时候,就当然17年现在已经就更低了。

到15年的时候,我们已经能够把错误率降降低到将近3%。而对于我们人类来说,我们人类在imagenet上的图像识别错误率大概是在5%这个样子。所以说呃其实短短的45年时间的发展。

我们已经积极学习已经可以让我们的嗯图像识别的能力超过人类了。所以。这说明了什么呢?说明就是这个时候机器学习已经可以用了。就是这个时候机器学习已经不再是单单以前我们在学术上发一发paper。

然后然后写一些热点的topic。而我们现在是机器学习,确实可以拿在拿拿来在我们的实际生活中运用了。所以说。所以说机器学习为什么会变成现在就是这个样子,为什么现在可以越来越work呢?其实它的归根结底。

它的原因一方面是计算力的提升,另一方面是因为我们数据的增加。嗯,对,但我们数据的增加,包括我们的模型越来越复杂,与之会带来一个问题。就比如说。

这张slides展示了我如果我们去训练一个ressonnet,就1个56层的resonnet在这个imagenet。如果你去在它的imagenet data set上的全集。嗯,训练它的话。

我们就是如果你让他训练到一个可以收敛的程度,就是一个差不多的精度,你可能需要花费14天的时间。对,这是就当然这是就是在一个M for zero GPPU上训练。

就是如果你拿单独1个M for zeroGPU来训练它的话,肯定要训练14天的时间。但是我们去我们做过深度学习,我们做过机器学习,应该都知道。其实我们的深度学习或者机器学习,我们是要不停的调参。

就是你需要用一种ad ho的方式,我们去不停的去调试你的模型。而如果你每调一次每调试一次模型,你可能都需要14天的时间,你才能看到结果的话,这显然是不可取的。所以说嗯这是一个挑战。

就是我们训练我们如果在大数据上训练我们的模型会发那个花费非常多的时间。呃,第二个例子是说我们的阿法go阿法go应该大家都知道。然后嗯现在已经打打败了李世时,打败了柯杰,包括最新的阿法goze。嗯。

已经可以展示出人类就是机器在煤气上已经可以展示出完全超越人类的能力。嗯,但是呢google为了训练阿phago其实可能要花费超过1万台GPU呃,当然我们在比赛中,比如说google放出来说。

我们在比赛中,我们可能只需要4台TPU,我们就可以在线的去跟李诗诗这样做对战了。但是这只是一个做inence的过程。如果我们去做training的过程的话。

是可能是需要非常非常大的GPU集群才能完成这样工作。当然google没有给出具体的数字,他们用了多少台GPU去训练阿尔法go。当然这嗯这个1万1万台这个数字是我从另外一个非常有名的华人科学家那里听到的。

就是大家相信大家应该也都知道田园度。他在facebook也是做之前也是在做强化学习方面的工作。他们包括他们也开源出了呃那个dark forest黑暗那个黑暗森林,他们那些也是一个那个围棋的软件。对。

然后是从他那里得知的是google用了大概超过1万台的GPU去训练阿go。对,所以说我们可以看到,对于深度学习这样的任务,我们的计算是非常非常耗时的。所以这对我们的训练带来了一个非常大的挑战。嗯。

除了我们的训练耗时呢,我们会发现我们还会面临另外一个大的挑战,就是我们的模型也很大。首先是我们的计算计算力要求很大。其次是我们的模型要求很大。比如说大家应该都知道LDA这个算法。

就是我们做 topic model,我们要从文档中比如说抽取出这所有文档里的topic。嗯,比如说就举个例子吧,嗯。

老师目老师目他们之前做的letLD他们可能将近我们会做他们的这个这个系统需要处理十的11次方的primeter,就是我们有10的11次方的参数,而如果按照这个规模。

你你你拿每一个参数都是用32bitat float来算的话,我们的模型大小可能是超过400个GB的。以这是在单机是往是远远不能处理这么大的模型。当然现在你比如说用一些superpower的计算机。

你可以处理就是它的内存可能有一个T,但是像对我们这种传统的计算机,嗯,一些就是传统的工作站或者服务器的话可能。是它的内存啊远远远是不能达到这个要求的。当然,训练数据就更多了。

心理训练数据都是以TBU甚至PB来计算的。

对,另一个就是比较有就是比较有典型性的例子。就是说我们做online advertisement,就是我们去做在线的广告点击预估。对我相信应该很多人也也有也也有过这方面的经验吧。

就是我们比如说你去搜google,然后他可能会给你推荐一次,你搜索一个什么词条,然后他会给你推荐一些广告。

然后怎么去给用户推荐他最最想要的广告呢?他会对这些广告做一个打分。然后比如说会展示出嗯用户最可能点击的5个广告或者10个广告,然后展示给用户。比如说在这个做广告点击率预估程中。

我们有一个非常重要的模型叫fieldware factors模型,就是FFM这个算法其实是之前在cargo比赛中提出来的。然后效果非常好。但是我们发现FFM算法一个最大的问题是它的模型非常非常大。

FFM的模型嗯可以说比深度学习模型要大很多。比如说就在。实际的工业中运用吧,我们经常可以发现你做一个超大规模的CTR prediction,我们的model size可能是超过1个TB的。

就是仅仅是model,我们可能就会超过1个TB。我们的数据量就是圈ingda可能是超过PB。所以说呃这也是对我们带来了非常大的挑战。

所以说我刚才介绍这些 backgroundground是为了说明一点什么呢?就是说现在你用一台计算机是完是完全不可能再去处理像我们工业规模,或者是去处理一个我们可以拿得出手的这样的机器学习模型了。

所以说我们的分布式训练已经成为了嗯一个先决条件。就是如果你要处理这种大规模机器学习问题啊问题的话,深度学习已经成为了一个先级先具先决条件。OK呃,我们做分布式机器学习。其实说白了嗯。

就是我们要把我们的任务发放给不就是许多的机器,然后让他们协同的去帮我们训练。然后这张图其实是展示了一个大概的我们呃这是这叫做一个primate server的架构。

就是说我们会把我们的呃任务下发给许多的worker,然后这些worker协同的去训练我们的模型。然后我们会有一个primate server的呃global shared state去做我们做对我们模型做进行同步。

对,但是如果我比如说很多人讲分布式经济学习会议上来就讲什么是primary server,然后primary server里面设计会有什么怎么怎么样的trick,各种各样的细节。但是我觉得。

对于初学者来说,去上来直接就去讲怎么去训练primate server,或者是去介绍这样的stem的细节的话,其实并不是一个很好的方法。我觉得更好的方法是要让嗯我们的用户或者让我们的学生去了解。嗯。

我们的深度学习或者说我们的分布式机器学习的系统,它的演变历程是怎么怎么样一步一步走过来的。我觉得这是一个非常重要的嗯top。就是我们只有知道的历史,知道我们的机器学习分布式机器学习系统是怎么演变过来的。

才能够更好的指导我们去设计新的机器学习系统。所以我们这一次的PPT主要也是从我们从大家最简单的mapre开始,然后从到到park的pri server。

包括到现在非常state of the art的像这种re or reduce这样的技术,我们去对用大家做一个梳理,然后把这把这条线帮大家理清。这样的话,大家在今后的学习过程中。

就是有什么问题就可以相应的知道这我我这一块应该对应着哪一块的知识,我可能要去查什么样的资料。我觉得这可能是对大家一个更好的学习方法吧。对,这就是我这次PPT主要讲的一些东西。好的。😊,呃。

我们把分布式机器学习去学嗯学习的话主要分为三个层次。对,就首先第一个层次就是蓝色的这个框。我们主要是要去了解机器学习的模型,以及我们的优化方法。对。

这是从我们的数学理论模型上去了解我们的机器学习是一个什么样的,是一个怎样的样子。然后到了第二个层次呢,我们是要去探索分布式机器学习的范式。对。为什么要谈论范式?

因为其实我们的系统的设计是基于我们的范式的。我们只要知道了我们有哪些范式,你无论上层是用market produceuce,用park,用primed server还是用MPI什么任何这样的东西。

我们只要知道了范式,我们就可以知道应该如何去选择我们的上层系统。对,然后知道了范式以后,我们就要去呃设计我们的系统。无论是一个你对于一个系统的设计者还是系统的使用者的话。

我们都要知道这个系统它的设计的一些哲学。就是他为什么要这样设计。然后这样设计对我选择嗯什么样的机器学习有什么样的帮助。我觉得这一点是比较重要的。所以这一次嗯我们可能就沿着这个思路来为大家讲。

从最底层的数学模型到范式,然后到系统的实现,给大家梳理一下分布式机器学习者这的三大块。对,首先我们可以看一下分布式机器学习的呃数学的一些也不叫数学的一些东西吧。就是我们的一些模型的理论。对。

这个这张slides其实是来自于微软研究院的刘铁岩老师在tri VI2017上做的一个ttuial上嗯,分享了这样一张sdes。其实我们可以看到就是。我们对一个机器学习模型,我们其实主要关注这六大块。

首先是我的模型是怎么样的。其次是我如何去就是它的inference是怎么样的,或者我们说它的prediction是怎么样的。就它怎么去做预测。

然后其次就是我 evaluationvalation就是我们要怎么去验证这个模型,它的是好是坏。然后其次就是我们怎么去优化这个模型training loss。

就这里evaluation和training loss,它俩可能是一样的,或者也可能是不一样的。因为其实很多情况下有一些evaluation是很难直接你去对它进行数学上的优化。

所以我们可能会换一些更通用,就是在对优化算法更友好的方法去做我们的training loss。对,然后包括我们还要去对算法进行正则。对,然后最最最下面一点也是比较重要的,就是我们选择怎么样的优化算法。

只要树对于任何一个机器学习模型,我觉得就大家拿到这个模型以后,都可以按照这6点看一看,把它梳理一下,看一看你能不能嗯把这6点这个机器学习模型的这6点呃,重重要的地方,你能梳理清楚。

比如说我用的是什么样的lo,我用怎么样的优化算法。然后包括我的模型做inference的时候是怎么给它打分的对,就是这些我觉得拿到一个模型里以后,大家按照这6点去梳理一遍。

基本上就知道这个模型它是怎样work的。OK我们举一个简单的例子,就是说,比如说我们说浅层的一些浅层的模型。比如说 linearar model,我们的这个co function是怎么样的?

就是我们如何对它进行打分,或者如何进行对它进行prection。其实很简单,就是把我们的权重向量和我们的feature向量做一个点点成就可以了。而比如说做 model的话。

我们可能是会对我们的向量feature做进行一个比如说高斯做一个到高维的映射。包括像我们的FM或者FFM这些模型其实是在自动的为我们的模型进行对我们的feature之间进行一个interaction。

就是说我们可以对它进行一些模型的呃交互。然后这样的话也是为了让我们的模型表达能力更强吧。对我们的浅层模型的好处是我们的可解释。首先它很简单,并且可解释,然后计算的很快。

所以尤其是相对于我们这种线上CTR预估啊这种这样的这样的应用场景。我们其实像这样的大规模线性模型,包括FM这些模型都是用的非。常多的。然后与之相对应的,比如说是我们的deep model。

就是我们的深度学习呢,比如说你无论是做一个全连接,还是做一个卷积网络,还是做RN,我们都是我们的就是表达能力,铁定都是比我们的线性模型更强的。但是与之对应的就是我刚才说的去训练一个深度学习模型。

它需要花费的计算力也非常大。然后这张slis是总结了一下我们的一些优化算法。就是说我们的优化算法嗯,可以看到,从最早其实我们的梯度下降是在1847年就提出来了,我们梯度下降。

然后其实一直到近些年来嗯提出的各种各样的一些随机算法。我们会发现,其实优化算法是经历了一个非常长的演变的过程。但是我们到头来之后我们发现其实梯度下降,我们最就是最早期提出这样的算法。

反而也是现在用的最多的嗯一些算法,只不过我们对它进行了一些改变。比如说我们把它变成minibankch的SGD,或者把它变成了纯的随机梯度下降。对,但是其实这样的理论就是它的理后背后的理论模型。

其实都是一样的。嗯。ok嗯。大家可以看到中间有一条分界线,就是说嗯以呃2010年左右吧,那么大家可以大概以这个时间点为为为界限。我们之前的算法我们主要是叫deterministic algorithm。

就是什么叫deterministic algorithm?就是我们这样的算法都是确定性的。换句话说,就是我们可以在数学上可以保证我们这个算法进行的每一步嗯都是一个精确的。

就是我们精确的指导我们的一个优化目标的。而当我们的2010年之后的这些模型,我们把它叫做tochastic algorithm。就是说这些模型开始变得很随机了。

就是说我们不要求每一步都是一个最精确的嗯梯度下降,或者每一步,我们要做一个最最精确的优化。我们可以让每一步只是进行一个随机的优化。但是我们最终把所有数据变利完了以后。

我们可能这个大方向还是能够优化到我们的最低点。对这样的好处主要就是为什么看到这个分界线是在这儿呢,其实就是因为随着我们数据越来越大。我们的terministic algorithm。

已经越来变得越来越不适用了。因为对于大数据的话,我们不可能每一次做每一个梯度下降,我们都要把所有的数据变利一遍。所以像这样的随机梯度下降,包括像这种并行的。嗯,随机梯度下降会变得越来越有优势。

就是说嗯我们的资源利用率可能会更高,包括我们的计算效率会更高。这样的话对我们的大数据是更友好的对,所以大家其实可以看到,现在不论是做神经网络还是做呃这种大规模线性模型。

其实我们用的优化算法都是随机的梯度下降。对。呃,像梯度下降这个算法应该大家都已经非常熟悉了。所以在此我也不就是详细讲了。对,但是我们现在主要是关心的是,当我们的数据量非常非常大的时候。

我们怎么把我们这样的随机梯度下降去运用到一个非常大规模的数据集上。然后也就是我们要去怎么样去设计这个系统,这是我们这次主要关心的地方。首先我们可以看到嗯。呃。

这张图展示了一种就是分布式机器学习的一种模式。呃,我们把它叫做数据并行。数据并行什么意思呢?就是说我们由于训练的呃训练样本非常非常的多,包括我们的模型可能非常非常的大,我们一台机器都是不能解决的。

所以我们首先我们需要把我们的训练数据把它划分到不同的机器上。比如说我们用100台机器,然后同时存储这些模型,每一个模型可能比如说我们有我们有1000万个数据样本的话,那比如说每一台嗯用100台机器来存。

然后每一台机器存100条。对。然后嗯其次的话就是。我们需要把我们的模型划分到不同的机器。因为我们刚才说我们的模型可能也很大。比如说像我们做那个LDA可能有400GB的模型。

所以我们一台机器也是装不了模型模型也是装不下的。所以我们需要把我们的模型也划分到不同的机器上。这样话其实我们就组成了两个部分,就是蓝色的部分一般把它叫做worker。然后绿色的部分。

我们一般把它叫做serv,然后这是一个典型的pri server架构。然后我们的对于每每一台worker来说,我们其实我们的训练算法和分布式呃没有呃和单机没有什么区别。

因为我们还是在单机训练一个嗯单机的这样的串新的算法。然后在在每就是在某某一个时刻,然后这些大家所有的worker可能会需要进行一个同步,叫schronize,我们就继续进行一个同步。

而这个同步的过程是发生在pri server上的。具体怎么同步呢?比如说我们的可以每一台机器嗯算了一部分算在一个时间窗口内,把我们当前更新的这些模型的梯度全部发送给这个pri server。

我们的primary server拿到这些梯度了以后,会把我们对应的就是相同的feature ID上的grdient。我们做一个相加。相加完了以后呢,我们再更新到当前的pri server上。

然后我们的prim server拿到了这个新的model以后,我们会把我们这些梯度呃,会把我们最新的模型再返还给我们的worker。对这这是一个比较典型的prim server的例子。

或者我把它叫做data parallel的一个例子。我们关心的另外一种模式其实叫嗯model parallelism,叫模型并行。呃,模型并行。我们是说我们把一个模型划分到不同的机器。

比如说在这个例子中,我们把一个神经网络的模型划分给4台机器,让他们同时训练。但对于每一次的训练来说,我们四台模型,四台4台机器上训练的是同一个数据,就是我们拿同一个数据在4台机器上去训练。

但是每一个机器训练的是不同的一部分。然后大家可以看到,就机器与机器之间,我们会有一些权重就是交叉的地方,就是或者说我们是跨这这个权重可能是要跨两台机器的。

这就是如果一旦发生了像我们的这种权重的需要跨两台机器的话,这种情况就是我们需要在机器之间做就是做同步。这这也也其实和我们的刚才的data parallel是类似的。

我们的d data parallel是说我们模型在嗯大家都有一个g,就就大家都有一个本地的模型,然后在嗯不同的时刻,大家可能要会去同步一下这个模型。

而到了model parallelm是说我们不同的机器有一部分模型,而且也是要到某一定时刻,我们会对这个模型进行一个同步。所以说从这这里面我们可以看到,其实做分布式机器学习,我们在做什么。

其实最重要的就是在做模型同步。说白了就是这一点。因为其实我们在嗯单机算的时候,可能就和一个创新的算法没有什么两样。但是分布式机器学习在做什么,就是在做模型的同步。而这里的挑战是什么呢?

挑战是说我们的模型可能会很大,所以我们这个同步的开销可能会变得很大。因为我们都知道我们的呃网络的带宽和我们的CPU相比是要慢很多的。就即使你现在用比如说万兆网用infin band这样的呃非常快的网卡。

它去和一个GPU或者和1个CPU就算和1个CPU相比,它的速度也是非常慢的。所以说嗯这里如果你不不能很好的处理我们的模型在网络上的同步的话,这个同步开销会成为我们的系统的瓶颈,也会拖累我们的整个系统。

所以说我们做分布式机器学习,我们在做什么,我们做的就是如何高效的进行模型同步。对,首先就是我们要明确这一点。OK我们知道了我们的这样的一个同步的范式了以后,我们就要说那我们选择怎么样的嗯系统。

或者说我们要去设计怎么样的系统,可以更好的支持我们这做这样的模型同步。其实这是这张图展示了一个嗯你可以认为是一个积器分布式积器学习系统的一个演化的历程吧。咱们可以看最左下角绿色这一部分。

其实这是最早期的,可能是从04年开始,然后一直到10年11年左右,大家用的非常多的一种范式叫mapred。对,这个是jeing在04年的OSDI上提出来的一种范式。我们去拿其实这个范式。

大家一开始嗯google内部有一个广告系统,其实一开始真的就是拿mapreduce在去做这样的大规模积器学习问题。然后逐渐的我们大家发现了mapreduce有问题,然后把它演演变到我们的spark。

但其实spark和mapreduce在本质上没有什么区别。他们都是他们在范式上或者说在系统设计的 architectureitecture上,他们都是有这种iterative的mapreduce模型。

对,然后这种这种模型一般是同步的,我们发现同步其实不高效,我们可能想用异步的方式。这个时候我们就演化到了。比如说primate server这样的。

就是我刚才介绍大概介绍一下prim server这样的系统架构。然pri server这样的系统架构,我们会发现它嗯是很高效的非常 efficiency,但是它缺乏的是一些好的抽象。

比如说我们去在primpri server上构建机器学习算法模型的时候,你可能需要写很多很多的代码,这对用户可能是不友好的。

所以就演变到现在比如说我们的tensorflow包括MXnet嗯这样的数据流模型可以给我们用户一种更加直观的方式去编写机器学习程序。而具体背后它是如何并行的。

其实用户并并不要去并不需要去管它都是由背后的引擎来自动的帮我们进行并行。比如说像MXnet,我们可以帮你做数据并行,也可以自动的帮你去做模型并行。而用。压根儿就不用去管,我后面是怎么做的。

那接下来我会把这。几种模型的演变方法,就是为什么要去怎么去设计,包括他为什么要一步一步的演变,会给大家做一个比较详细的介绍。首先我们来看一下像maproduce这个模型。

就是我们从04年到10年这段时间,我们为什么都一直是在用这个方式来处理我们的大数据问题。对,我们先来简单的复习一下。我们刚才说我们做分布式机器学习,我们需要在每一台机器去选算我们的一个本地的模型副本。

然后我们需要得到这些模型副本以后,我们需要把我们的统计量叫sufficient。我们要把我们的统计量发送给我们的一个可以去就是把它们进行 merge的这样的一种节点。

就是我们要发送到一一些可以把它把这些嗯你可以认为是收集器吧,我们需要把它发送到一个收集器上,然后把我们不同机器上的这些统计量把它加起来。这里的统计量,其实大家可以理解为,比如说对于梯度下降来说。

这样的统计量就是梯度。然后如果比如说呃像呃如果你做LDA的话,你去用gaap sampling去做的话,它可能就是它的统计量,你可以认为嗯就是。它的统价你可以认为就是一些直方图。ok。对。

然后我们需要做的就是嗯去优化一个lo。比如说对于一个logistic regression来说的话,我们优化的比如说就是一个log loss,或者我们把它叫做croenttropy loss。

然后我们的所有的机器去并行的去优化这个los。然后我们需要每一次怎么去优化这个los,就是我们找到这个los函数的导数,然后每一次去通过这个导数来更新我们的model。对。

这是我们一个对我们这样机器学习一个简单的复习。那mapreduce它的抽象是怎么样的呢?嗯,是这样的,就是对于每个maproduce任物来说,它的有一个map和一个reduce。对于map任务来说。

它会把嗯它会扫描你的文件,然后文件的每一行呃它会认为是一个record。然后对于每一个record,它会你可以自自己写一个map函数。这个map函数需要输出的是嗯一系列的key value。

就是你经过这个你处经过处理完了以后,你需要把这个record变成key value。如果对应的我们的机器学习里,我们会发现嗯一般我们的key,就是我map produce进行嗯map阶段处理完以后。

我们的key就是我们的feature,或者我们可以叫做feature ID,就是你你这个key来表明你当前处理的这是哪一个feature上的嗯梯度。

然后我们的value其实可以你就你就可以认为是算的是一个梯度吧。这如果你拿这个word count做例子的话,就是你去扫描这个文本,然后对每一行每一个嗯word那对每一个单词你会给它生成一个一。

就是说我们这个表面当前这个单词出现了一次。然后对应的我们机器学习上,我们就说key是我们的feature,valueue是我们的 gradientdient。而我们的reduce是干什么呢?

我们的reduce说我们会把相同的key,我们会把它发送到同一个节点上。然后我们会把这些key进行一个merge,或者我们可以叫做把这个key进行一个相加。

这样的话带来的好处就是我们嗯所有机器在不同机器上算的统计量,我们可以更新到一个局部了。这样的话我们就得到了一个全局的统计量。然后有了这个全局的统计量,我们就可以用这个统计量来更新我们的model。

但是对mapreduce这样的模型,其实你会发现嗯就就以它的表达力来说,它已经可以完全处理很大一部分的机器学习的任务了。对。

其实在angual nG他们在2012008年的niips上有一篇嗯文章叫做呃具体名字我忘了,但是他们是就是讨论就是mproduce这样的范是是否适合来处理机器学习这样的任务。在当时08年他们那个时候。

ang n G他们的回答是是的对,他们说maproduce他们就是总结发现maproduce其实对于当前主流的这些机器学习算法都是能够进行一个很好的表达。然后当当年这篇论文是发在niipps上。对。

但是我们来探讨一下,为什么其实mapre并不是很适合去助理处理积极学习的任务。我们还是以这个logistic regression为例吧。

我们logistic regression我们去呃优化这个呃logistic regression,我们需要干什么呢?就是我们最终可能需要得到一条直线,就是可以把我们的正力复力分成两边儿。对。

然后我们算的时候会一步一步做一个iterative的这样的更新,然后最终可能找到一条线可以差不多把这两嗯把正力和也负力分成两边。嗯。

grading descent我们一般去会去优化一个呃log loss。对我们去优化一个log loss。对这个呃log regression。

这样的话就要求我们的学习算法需要每一次都要去从我们的就是比如说你要从HDFS中sble出一个一部分的data。然后我们对它进行梯度的计算。然后进行完梯度的计算了以后呢。

我们需要把它们通过reduce merge到同一台机器上,然后再对它进行一个model的更新。这是一个大概是整整个这样的一个流程。但是我们需要反复的不停的迭代做这样的一个过程。

但是我们会发现mproduce的设计原理其实并不是非常适合做这种迭代型,或者我们叫做mote stage的任务。大家可以看到,这是一个简单的例子。

比如说首先嗯第一轮我们的initial model叫做W0。然后这个时候我们会map任务会从我们的training data中把数据加载进来。然后通过map reduce过程以后。

然后我们会把这个我们得到的当前的梯度或或者我们可以把你可以认为模型也可以。我们会把我们当前的模型再重回磁盘。这个时候呢我们会得到一个W1,我们从经过一轮的迭代,从W0变到了W1。

但是第二但是我们一轮迭代体验是不行的嘛,因为我们可能要做非常多的迭代部分迭代步骤。然后这个model才能收敛。所以第二次呢我们会用呃我们的会mapreduce会继续起一个mapreduce任务。

然后从我们的training data中sle出呃一部分da,然后去做做第二轮iteration,然后我们得到W2。对,一次反复的我们会反复的去做这个过程。然后直到我们的模型收敛。对任务就结束。

其实大家如果用过马ho这个库的话,就是嗯前几年比较火的一个机器学习库,就是他们在mapreduce上做了一个封装,就是嗯可以让mapreduce去做一些机器学习任务。

你会发现嗯马hot他会需要自己用户你需要去自己写一个脚本,或者说马浩t帮你写好的一个脚本,就是这个脚本它在干什么呢?他在不停的起mapred任务,然后不停的把数据从。从数呃数据从磁盘中读到内存。

然后把我们的模型从内存中再当补到磁盘,然后并且它需要写一个脚本,把就是许多的maer任物连起来。对,这样做的话,其实带来的问题是什么呢?我们显而易见就是每一每一个iterative的训练。

我们会发现我们的。训练样本所有的训练样本都被加载了一次,这个其实是非常大的开销。就是如果大家用过LR或者FFM这种FM这样的模型的话,大家其实会发现对于。广义线性模型。

或者对于我们这种嗯大规模稀疏的线性模型来说,我们的数据读取的开销其实是比你模型的计算开销要更大。对。所以说相当于我们每一次都要把数据从我们的磁盘中拷贝到内存,然后再进行计算。

我们最后发现我们的数据拷贝成为了瓶颈。我们的数据拷贝就是严重的影响了我们系统性能。所以这也是mapreduce提出以后,大家用mapreduce在做机器学习任务是发现的最最最痛的一个痛点。

这是第一个部分。第二个部分是说。我们每一次reduce完了以后,我们不能直接把我们的gradient做一个更新。我们可能需要把我们的gradent,我们把它先存到磁盘上。然后这个时候我们可能需要用脚本。

然后把我们这些gra再拿出来,然后再维护一个嗯模型的一个变量或者说模型的一个数据结构,然后更新我们的模型数据结构,这个时候再把我们的模型发送给下一个stage的preduce任务。这样来说的话。

我们发现在模型这一块,我们又有一个就是和磁盘的交互。对,当然这个模型和磁盘的交互,没有我们嗯之前的数据和磁盘的交互影响那么大。但是它对用户的编程感觉来说,就是从用户的编程上来说是不友好的。

因为用户我们得到梯度了以后,我们其实更想做的就是直接可能用梯度下降就去做一个更新了。但是我们这个时候不行,我们得把我们的梯度先全部dump到磁盘,就是用reduce的话。

就是还是要把一大堆的key value,我们要d到磁盘,然后我们再去解。个KY来更新我的模更更新我们的我们的模型。对,所以这就是我们说呃mapreduce在做机器学习任务上的一个痛点。

所以说我们要做的就是我们要去优化我们这样的iterative的prouce任务。那怎么做呢?其实应运而生在2012年嗯spark对,就是usberkeley他们出的spark。

然后发嗯这篇论文发表在NSDI2012上,其实spark你从现在看的话,嗯当当年在那个年代发就是做这个park还是比较有远见的一件事。

不不过当然现在可能像tensorflow m xnet这些嗯框架已经超越它了。嗯,当然我是说在做机器学习这块的能力已经超越他了。但是spark在当年那当时那个年代提出来还是比较嗯算是一种突破吧。

spark的其实思想非常简单。我们刚才不是说我们做每一个mapreduce模型的时候,我们都需要从我们的训练数据中,就是我们的磁盘HDFS中把训练数据取出来。

所以我们spark就想我们为什么不能把这些数据,我们就c在内存里呢?我们只需要读一次,然后我们就把我们的数据c在内存里。然后我们这样的话,我们进行mapreduce任务的时候。

我们就不需要再从磁盘里拿这些数据了,我们可以直接从内存里来取。对,这几这是一个很直观的思想。包括我们对,但是就是这样一个简单的改进,我们可能会带来一个10到100倍的。就是性能的提升。对。

其实现现在看做st的人,大家都知道内存比此贪块。但是为什么当时只有spark就是把这个东西做出来,并且推广的比较有影响力呢?对,这是大家可以思考的一个问题。对,就像我们刚才说的,除了我们每一次训练。

不用再把我们的训练数据从我们的磁盘中拿出来了。我们每一次做完reduce了以后,其实我们也不需要再把我们的模型去当不到磁盘上。我们只需要把我们的模型发送给。

就是直接嗯交给下一个stagereduce任务,然后来做就可以了。然后这样我这样相当于我们又节省了一次那个磁盘的开销。但是其实sk的嗯虽然我们感觉park好像很完美。

我们用内存可以加速非常就对我们的计学习任务有非常大的加速。但是它的一个问题是什么呢?就是它是个emem的系统。对ememory的系统呢有两个问题。首先是说,如果它memory不够怎么办?

因为我们知道现在的数据动不动,就是上几TB的训练数据,你就算拿十0台机器,你去算吧,你每台机器也要用几百个G的内存去存它。所以这其实对于很多尤其实是对在学校里做一些科研的人来说,其实我没有那么多的机器。

然后没有那么多的,有大内存的机器。所以其实spark有的时候挺鸡肋。就是说当数据量真的很大的时候,你是没有办法把它存在内存里的。对,第二个问题是说我们存在内存里的问题。如果我们比如说mapreduce。

我们算算算算到第5个mapreduce的时候,我们的这个任务挂掉了怎么办?挂掉了怎么办?难道我们需要去就是重新算一遍吗?对,起码p6用的line抑制的方法,其实就是其实就是这样。我们从第5个。步骤。

比如说我们从第五个嗯iteration的时候,我们的模型挂掉了,但是我们的模型是存在磁盘上的,我们并没有把它在呃我们的模型是存在内存上的,但是并没有对它在磁盘上进行一个副本。

所以这个时候没有办法嘛park就需要用lineage重新计算一遍。但其实你大家想想,如果你现在去做一个深度学习任务,你需要跑100个apple。然后你跑到第99个的时候挂掉了。

然后这个时候sk时我要好吧,我要从头再算一遍,这个是大家不能接受的对。所以说lineage这样的容错模式和我们做checkpoint checkpoint这样的容错模式到底谁好呢?其实有一个。嗯。

比较好的回答是这样的。如果你的数据。远远大于你的模型的话,其实checkpoint是一种更好的方法。就是如果你的数据远远大于你的模型的话,你从算的代价就变得非常的高。

而你对模型进行一个checkpoint的副本的代价就变得非常小。所以这样的情况下,我们可能更想让我们的模型去做一个副本,而不是用linege这样的纯意memory的方法去嗯做容错。对。

其实也是为什么park,大家可以看到,其实park这两年。变得好像没有前几年那么火了,这也是一个重要的原因。对,因为现在的机器学习任务的特点,其实ma produceduce也变得越来越不适合。对。

所以这就进入到我们的下一个章节。就是说我们park也不适合做我们现在这种大规模集器学习任务了。比如说我们的模型非常大,我们一些online的这种algorithm。那我们现在要做什么呢?

我们可能会提我们就会提出一种新的计算架构,叫做prime server。行,那个我现带咱们大家先休息5分钟吧,大家喝口水好吧,然后我也看一看那个嗯大家留言板上的些留言,然后咱们一块接着继续讲5分钟。

嗯,行,那个大家能听到声音吗?能听到的话打一吧。

行,好的,那咱们就继续开始吧。行,我们先回顾一下上呃上半堂课我们讲的一些东西,就是说呃我们讲了怎么从怎ma produceuce去怎么做我们的分布式机去学习。然后我们讨论了他的问题。

然后说我们到演变到park。然后我们发现spark也有问题了。park什么问题呢?就是它对应我们这样的,像比如说big model,或者说做一些在线的任务,其实并不能处理的很好。

所以这就提出了一种新的架构叫priate server。我们大概解释一下呃,我们的问题是什么?就是大家可以看一下传统的呃模型,比如说。大家去嗯比如说在sed learn上跑一些他的那些自带的例子。

大家会发现它是这样一种情况,就是说我们的模型维度是很大。比如说我们的模型可能。呃,有比如说你有1万个数据样本吧,你有1万条数据样本。然后我们的模型呃,但是我们的模型比就是很小,我们的数据很大。

但是模型很小,模型可能嗯几十个feature,上百个feature就差不多了。这个时候。我们会发现是说我们的数据是瓶颈,我们的模型很小,模型不是瓶颈。但是现在的一些任务我们会发现演变成一种什么情况呢?

就是我们的模型的维度和我们的数据的模维度就是基本上会差不多了就是。什么意思?就是说比如说你有10亿个10亿条训练样本。比如说举个例子,就是我们做CTR点CTR点击预估。

你有11条10个呃一个 billion的训练样本,然后。你的模型参数可能也是一个B脸,就是你有你也有一个10亿的呃维度的参数。但是这样的带来的一个问题是说,我们并不是每一条训练样本上。

我们都有10亿的feature,而是说我们的每一条训练样本上可能只有几百个维度是有效的。就为什么会这样呢?嗯,大家可以想象一下,比如说。你有一个feature叫做嗯country。

就是你你你有这个feature代表你这个人是什么国家的,但国家的维度可能就有上百。但是你当前你的个人来说,你只可能属于一个国家。所以你去比如说你做一个one hot en了以后。

你的国家这个维度就会变成一个上百位的向量,而你而你当前的用户只会占其中的一个地方,就是以亿维向量。其实像国家这样的feature还比较好了。但比如说你有一些feature叫user ID。

就是他们会直接把user的ID去作为你的一个feature。这个时候你的feature就非常非常大了。比如说你有1000万个user,你有1000万的用户的话。你会发现你也只是只能占到当前的一位。

所以也就是说每一个训练样本上,你这个spars的程度是你在1000万位里面只能占到亿位。所以说这会我们就会发现我们的模型非常非常的大。但是我们的数据非常非常的稀疏。这种情况。

如果我们再去用maproduce,或者用我们的spark去做会出现什么问题呢?嗯,我先举几个例子吧,就是说我们什么情况会用到这样的模型,比如说。我们去做一个垃圾分类,邮件的垃圾分类。

你去用backag of words这样的方法去做分类。我们的单词这个词项量可能是非常非常大的,可能是嗯10万维,甚至是对10万维吧。因为你可能会对5word进行一些就是组合。对。

可能到10万为、百万维都可以都有可能你去做CTR预估的话,你可能会有一个biion的这种模型。包括你像去做topic model的话,也是这样这样的我们也会发现模型非常非常大。但是数据是系数的。

这个时候如果我们再用刚才说的spark这样的模式嗯来处理,会出现什么样的问题呢?就是说。大家可以看一下这个动画,就是说我们当前有一个spark,有个driver。

这个driver是来就是负责我们一个全局的model。我们的driver会把我们的数据发呃会把我们的模型分配给。不同的server of worker,然后这些worker会在本地进行运算。

预算完毕了以后,大家会得到我们的模型更新。但是大家可以看到,我们的模型更新是非常非常se的。因为比如说我们做每一次运算,用一个mini bench,用一个mini benchch去做这样的计算。

我们可能发现我们的模型更新是非常非常spapare的。这样带来了一个什么问题?就是说我们这个时候需要把我们的spae的数据发送给我们这个driver。对我们不需要发送整个模型。

因为比如说你1000万维的数据,你只有一个维度,是你当前的UZ IDD。所以我们当然是只是把这一维的梯度发送给我们的driver就可以了。对。

这个动画就演示说我们的worker会把我们这些稀疏的东西发送给我们的driver。发送给我们的driver以后,driver会对这些稀疏的题度进行一个呃合并。

合并完了以后会更新一下这个driver上的这个global的 model。然后这个时候呢,driver会把我们的这个新model,会bocast给我们的每一个worker。对。

就是因为这是候我们得到了新模型的嘛,所以我们会把我们的它会做一个boardcast给我们的worker。worker拿到新新的模型了以后,相当于做了一次同步。这个时候大家又可以继续算。

O大家可以先看一下刚才这个问题是什么。😊,这个问题就是说,如果我们的模型非常大,你有一个billion的模型,但你每次要做一次boardadcast,你做每一每一次的更新,每一个iteration。

你要做一个broadcast,这样带来的问题就是说我们的网络带宽是根本承受不了的。因为你想这只有一个driver,你的driver,现在你比较厉害吧。你做你是万兆网。你这就算是万兆网,你100台机器。

同时向他发一个,你要你要给一100台机器同时去boadcast的一个一个bi的model的话,那你的网卡是远远不够的。对,所以这是park为什么不能处理我们这种非常大的model这样的原因。对。

这是刚才那个动画,大家可以再看一遍。O。好,这是第一个问题。但是呃我们说像spark这样的模型带来第二个问题是什么呢?嗯,我们说第二个问题是它的同步开销会嗯减减慢我们的训练过程。

会就是对我们的系统性能造成一定的影响。嗯,怎么说呢?大家可以看一个例子,比如说我们现在有三台机器。第一台机器呃我们算的很快,这个iteration可能已经算完了。然后然后过了一会儿。

我们第三台机器可能也算完了。但是第二台机器可能是呃有有一些什么原因,比如说它的机器比较老旧了,或者是它的这个数据data skill比较厉害,所以它可能算的慢一些。然后我们一直算呃motion一呃。

就motion one和motion three已经算了很久了,然后然后然后它才能算完,这个时候嗯。这个时候我们需要进行一个communication,就是说我我需要等我的第二台机器算完了之后。

我才能去进行一个communication啊,然后我大家会经过这个communication了以后,会得到我们的一个新的模型。然后这个时候我们才会进行第二轮的计算。

但是这样大家会发现我们会有许多的等待时间,其实是被浪费掉的。就是我们第一台机器算完了,我就一直在那等着,然后要等你第二台机器算完,我才能给你通信。然后才能进行下一次的计算。

这其实大家会发现等待的时间远远是超过了你计算的时间。所以这就是spark带来的另一个问题,就是我们说同步计算嗯,系统的资源利用率是非常低的。所以我们说。我们能不能让我们的。整个的计算变成异步。

就asynchronized的 execution。就是说我们每一台机器。我们在算的过程中,我们只要算完了,我们马上就会和其他的机器进行通信,而不用等你要最慢的那台机器算完以后,我们才能通信。

这样子的好处就是我们可以把我们的网络和我们的计算可以把它 overlap起来。然后可以提高我们的系统资源利用率。对,这是我们的mo。所以说就是因为有了这个motivation。

然后大家提出的这种primed server这样的架构。primate server大家可以想象成,就是说我们用一些机器专门去存我们的模型,就是我们把模型放到叫primate server的机器上。

而我们的其他的这些worker在这里就是三台 machine,就是我们会发现你在计算的过程中,你需要什么模型,你就去和priate server拿,你算完了什么梯度。

你就去把你的梯度发送给pri server。primate server会自动进行自动的更新,而你不用再去和其他的机器交互,说我必须要等你最后一台机器算完了以后,然后我才能跟你去同步我们的模型。

这样这样这个就是叫做asynch as execution。嗯,因为大家可能会想,为什么asynchronize的这样的计算,我们最后模型是可以同步的呢?其实也有也有很多的文章去证明为什么一步计算。

然后我们最终的模型也是可以去收敛。所以这个大家如果有兴趣的话,可以去看一看nis上的一些文章,就去探讨为什么asynchronized的呃执行可以收敛。但是我觉得这个其实不重要的。就是大家只要知道。

现在大家用这比如说就多做就做这种大规模的paeLR的话,就用asynchize的就够了。对,我们不用去同步。prim server其实也给我们提供了两种非常好的抽象,一个叫get,一个叫ad。

就get就是说我在一个worker,我想要拿到一个维度上的模型,我只需要用get这个AP去嗯告诉我的告诉我的server,我需要什么样的key他就会server就会把这个key对应的value发送给你。

而我算完了梯度之后呢,我需要把我的key和我的这个梯度,我们叫delta再发送给prim server,然后pri server就会对它进行更新。对,这个如果你可以你可以说它是get add这样的抽象。

你也可以比如说它是push或者poll这样的抽象都可以。对。因为我们说刚才我们刚才那个例子中展示的是pri server,是一个逻辑上的,就是我们把所有的嗯参数存在一个pri server上。

但是呢实际上因为我们刚才说一你的模型可能会非常大。你一台机器可能是存不下的。所以这个时候我们就需要把我们的模型把它划分到不同的机器上去存,具体就是你怎么去每一台机器存哪些模型,其实呃你最简单的方法。

你就是按顺序划分呗。就是说前三个前三个参数我给第一台机器,中间三个给第二台机器,最后三个参数,我给第三个机器,这是最直观的就按range的划分。其实还有一些比较复杂些的划分。

比如说consist consistencyush,就用一致性哈希的方法你去去划分这个模型,这样去划分的话,主要是为了解决。比如说你一台pri server挂掉了。

或者是我要添加新的pri server以后,我怎么能够让我的机器继续知道我去哪找这一台找这个key。对,就是用一些一致性哈希的方法去划分这个划。我们的 key。对,这个大家如果感兴趣,可以去看一看。对。

但是我们刚才说嗯。我们primate server,我们的worker可以完全异步的去和它进行交互。也就是我们和呃我们不用在计算过程中去和其他机器打交道。

我们只和一个prim server完全异步的去进行通信就行了。但是这样带来会有一个什么问题呢?就是说如果你异步的程度太厉害的话,可能会导致你模型收敛速度会下降。大家可以想象,这是一个tre off。

就是说。呃,你完全同步的情况下,你一定是下降的,就是收敛的速度最快的。对吧因为你完全同步的话,你没有任何的这种就是不一致。所以你在数学理论上来说,一定是是你的模型收敛的最快。但是如果你完全异步去做的话。

异步因为你会有数据不一致的情况,所以它会影响你的收敛。但是它的好处是什么呢?是我的系统资源利用率高了。比如说我可能之前只算了10个梯度哦,只算了十轮迭代,发送了10次梯度。

但是你现在我可能我已经可以算20次迭代,发送了20次梯度了,虽然我收敛变慢了,但是我算的快呀,所以我异步的可能就把你赶上了,但是说我们中间能不能找到一种更折中的方法呢,这其实就是我们说的SSP协议。

这是mps13年的一篇文章。SSP协议说的是什么意思呢?嗯,我们给我们在算的就是在做这样分布式嗯,同步的过程中,我们要设置一个bound。比如说我们把这个bound设置为3,设置为三的时候。

就是我们最快的机器。当你发现比你最慢的机器已经快了三个呃t就是我们说三个迭代那个 vector clock了以后,你就不能再去接着算了。大家可以看到这个例子中。

我们的机器一已经算了第四个iteration了。但是我们的机器二只算了一个iteration。这时候你的bound如果设置为3,我发现好,这个时候我已经比你快三个步,三我已经比你快三步了。

我就不能再算了。这个时候我要去等你。对,有个berryry。其实这里也是一个很直观的想法,就是说你不能跑得太快,你跑的太快的时候,我就让你停一停,等一等你落后的人民。对,然后你对你不能跑得太快。

让不能不让让不能让一个人成为富人,要让大家共同富裕,对吧?这样的好处是说我们去可以做一个trarede off,你去选择不同的bound。

然后嗯你可能就会最终会发现你的可以找到一个收敛的最快的一个呃一种方式。对,这大概就是pri server的一种思想。然后目前的话如果大家想去看pri server的实现的话,主要是有两个。

一个是大家可以去看李木。对木神他实现的他在OSDI之前的OSDI上发的那篇文章。对,现在他们这个呃这个地址是链接比较老了。

因他们现在那个是prim server是在DMLC对你们可以看DMLC里面的prim server的代码。对,然后另外一个代码就是呃也是CMU action他们教授的。对。

这个这两这两个代码都是比较好的那个prim server的实现。对,哎发现这两个代码好像都是CMU当时出来的对,CMU不愧是积极学习很强的学校。okK那我们说prim server上的模型。

具体我们去如果用在deep learning这样的模型上,它是个什么样子呢?其实。嗯,你可以认为如果你要在一个GPU集集群上去做pri server这样的分布式训练。

实际上它是一个hiarchical的架构。就是说嗯我的CPU和我的CPU和我的network switch进行交互。也就是我们的CPU和pri server进行交互的时候,是通过我们的网卡。

这是第一层的 layer,但是对于每一个节点之内,我们可能每一台CPU会再控制,比如说4个4卡多卡。比如说我们用4台GPU同时训练,我们会通过PC pCEsitch再去管理4台GPU也就是说怎么算呢?

就是我们的模型实际上会在4台4台GPU上各拷贝一个模型,然后这4台GPU会同同时的去算算完了以后,我们会把梯度通过先通过PCIEs发送给我们的CPU。

然后我们CPU会在本地比如说做一个 mergege做一个相加。然后这个时候CPU再去发送给network switch我们在pri server上再去做一个相加对。嗯。

比如说现在因为大家可能知道呃像GPU像英英伟达它有一些。除的技术叫GPUdirect嘛。所以说我们可能不需要把我们的GPU上的梯度全部要通过CPU的PC switch拷贝给GCPU。

然后去做这个 mergege。我们可能GPU之间可以进行这样的。P two P的通信,然后就可以把这个梯度本地的梯度先 mergege好, mergege好了之后呢。

我们再让CPU去发送给我们的呃prime server。对。大家可以看一下,这就是如果你就是再看一个更仔细的话,这样的架构就是大概就是这样的一个样子。

就是我们的呃每一台GPU上都有一个local的 model啊,每一台GPU上有一个local的 model了以后,我们会在本地先做行一个 mergege。

然后再通过network switch进行一个 mergege。对。行,那我们现在想一想,就是我们要去思考一下。我们训练deep learning和我们去训练这种大规模sse的这样的模型。

它们之间有什么区别?对,这样你呃你去了解他们的区别,其实对你去选择,包括你设计你的系统是非常重要的。比如说我们先看一下模型大小吧,model size嗯。比如说我们去训练一个resson night。

我们可能要56层吧。你去训练一个ressonite,你可能模型。就是你完了以后可能就只有5050MB的模型吧。alexnet可能你可以稍微大一些,你250个MMB。然后比如说现在是比较大的吧。

比如说像百度的dep speech做那个语音的,然后他们你可能将近有一个G的。呃,模型吧对大家可以看,大概深度掘习模型没有想象中那么大。对,可能就是几十几几几十MB几百MB就差不多了。但是你去看。

比如说你要去做FFM,你去做一个cargo上的CcrCT2的预估这样的比赛,你可能发现你的FFM的一个模型就有1。2个GB。对,所以你就会发现,其实深度学习模型和这样的呃点击预估这样的模型来比。

它的model size是小很多的。其次我们看一下处理速度。就是如果你去算一个稀疏的logistic regression一秒钟的话,当就就以现在比如说I7I7的CPU来算。

一秒钟你可能能够处理呃一个 million的数据。就你可以处理100万的数据。如果你是FM的话,你可能比它慢一倍,就faations machine。如果你是FFM的话,你可能比它慢10倍。

但是就即便是FFM,我们也可以算到10个呃就10万个样本每秒这样的速度。但是如果你去但是如果你去算那个reson night,你在GPU上去算的话,4台GPU你同时算,你可能2002200个图片。

一秒钟就差不多了。对你大概能到一个这样的速度。所以我们会发现。呃,他们的差距是非常大的spaLR他们这样的数据,他们的网络模model会非常大,但是它的训练速度非常快。

而我们的深度学习呢是我们的model没有那么大,但是它算的非常慢,这是一个非常重要的区别。所以说我们去如果要去分布式训练一个深度学习的时候,我们需要有一个重要的trick。什么trick呢?

就比如说我们要先去做forward,然后做backward proag。这个时候我们有一个重要的trick,就是我们的计算和network。我们要做一个over。就是我们要把我们的计算和我们的网络通信。

把它用多线程的方式把它就是over掉。对。具体是什么意思呢?比如说这张图这张图是erric教授他们在呃他们发的那个新系统叫海神那个系统。对你看一下上面的上面的这个呃B1B2。

然后一直到BL他们是一个传统的呃back proagationBP的过程。就是说传统的BP是说我要呃forward,我是从我的输入层,我的er会一直传递传递传递传递到我的输租层得到一个最终的er。

而我得到最终的arrow error以后,我要通过BP的方式把,它反向传播给呃最最最低的那一层的神经网络lay。这个时候。我们如果你用一个很打义务的方法去实现它的话,你会把它全部算完了以后。

然后你再对你的这些呃梯度进行一个同步。这其实这其实是很。也,就是很浪费的一种方法。所以他们你看B图这种BB图中,我们会发现,其实我们算每一层lay的时候,我们就可以只要这一层的lay一算完。

我们就可以和其他的机器进行交互了。我们只要把这一层的lay算完了以后,我们就可以进行我们的梯度的communication。而不用等到我说我要把整个BP的过程做完了以后。

再做一个统一的嗯再做一个统一的communication。因为大家其实会发现,因为这这样做什么好处呢?因为深度学习,在刚才我们说了,深度学习的模型没有那么大,而它的计算开销又非常大。

所以说我们有可能会把我们整个的网络通信的开销都会被隐藏到我们的计算中,就是有可能我们的计算算完了以后,我们的网络通信也就也就马上就结束了。这是一个非常好的事情。

就是我们会发现嗯无这这就代表着我们无论你的增加多少台机器,你你的网络开销都你可以认为是不变了。就是说我因为我网络就不会带来什么开销了。我们全部都被 overlap到我们的计算中了。

所以这是一个非常好的事情。所以你会看到,比如说像我们做MXnet。我们用80台GPU来去算的话,我们可以将近达到1个73倍的加速。我们去算算ressonnet对这80个机器达到73倍的加速。

你可以将近认为这就是线性的加速比了。这是这是很多,比如说你你写多线程程序都不可能达到的。你写多线程程序,你有你有8个,你有你用8个thread或者你用4个thread。

其实你你用4个thread能达到2。5倍加速,其实已经很不错了。对,所以但是你看我们在跨网络的多GPU做的时候,MXnet,我们80台GPU可以做到73倍的加速,这已经是嗯非常好的一个效果了。

这里面用到的一个重要的技术,就是说我们要去做communication和呃computercomp的 overlap。好的,嗯,我们刚才说嗯,我们可以看看刚才再看看刚才这个结果。😊。

这个结果我们用的是resonnet,就是我们算一个残插网络。你大家如果用过ressonnet,应该知reresonnet算起来是比较慢的。所以这种情况下,我们是我们觉得越慢越好,为什么呢?

因为你越慢的话,代表你可以有更多的机会将你的communication隐藏在你的计算中。但是我们会发现现在有很多呃任务,比如说你做一个全连接的神经网络。

你用一个foly connect fully connected network。你去算的话,你会发现它算的非常快,但是它的模型。并不小。换句话说,你的模型不能被呃很好的over到你的嗯这个计算中。

这个时候怎么办呢?这个时候我们已经不能over了,因为我们的 overlap可能没有办法你嗯达到你的想要的效果。因为比如说我们拿GPU算是非常快的,GPU处理速度非常快,这个时候你的网卡始终是被打满的。

你的网卡始终是bottlene。这个时候怎么办呢?我们想到的一个优化方法,就是我们要去做对gradient去进行压缩。这里我可以大概讲一下两种压缩方法,一个叫one B quantization。

还有一个叫to beat quantization。这两种方法呃我们之前呃正在做到MXnet这个系统里。然后应该会会尽快我们会把它发布出来吧。对大家可能用到之后再用MXnet的时候。

可以尝试一下这个呃 quantization的这个效果。我大家先说一下什么叫one bit quant。嗯,举一个例子,咱们比如说这当前这个model,或者你说当前这个lay,假设只有6个梯度。

这当然当然是不可能只有6个梯度啊。但是呃你这个作为例子嘛,就是你假设它这有6个梯度。然后它可能有正有负,大家可以看到这个正的,比如说我们拿黑色代表,然后负的,我们拿一个红色来代表,就是梯度。

你算出来可能是有正有负的,这个时候呢我们要对这个wector进行压缩,我们就为因为压缩它我们是为了减少我们的网络通信嘛,我们怎么压呢?大家可以看一下。我们首先我们要把我们的所有的正的梯度加起来。

求一个平均。也就是0。1加0。2加1。2加0。5除以4等于0。5。对,所以我们得的我们的正的梯度,它的平均值是0。5,而负的梯度负的0。4和负的0。3,平均值负的0。35。

所以这个时候我们得到这两个平均值了以后,我们需要把我们的正的所有的梯度都先都变成这个平均值,也就是我们所有的黑色的正正的梯度都变成0。5。而我们红色的呃负的梯度全部变成负的0。35。好。

这个时候因为我们的整个梯度中只有0。5和0。-的0。35这两种值,所以我们只需要用一个beat map就可以去保表示它。比如说我们拿正正的黑色的,我们用一来表示,然后红色的用零表示。

所以这个时候我们用一个beat map就可以表示我们的嗯整个的这个vector了。这时候我们会发现我们就做一个这样的压缩,我们就会得到1个32倍的就是呃叫nettwork bandwidth的一个提升。

就是我们的网络通讯会议体析下降32倍。对。这叫one bit quant。然后我现在再介绍一下什么叫to beat quant就是。嗯,相比于它我们刚才为什么叫one beatat呢?就是说我们每一台。

我们把每一个梯度可以用一个一个be就来表示它。而听名字大家可以看到tto beat实际上就是说我们每一个嗯我们把每一个梯度用两个beat来表示。这个怎么做呢?我大概讲一下流程。

就是说呃我们我们这个时候不是我们算one beat的时候,我们是要把梯度的平均值算出来。但是我们去做tto beat的时候,我们需要让用户设置两个sethold。对,比如说呃我们设置两个sshhold。

我们买正的sshhold叫正的0。25。然后fo thresholdshhold我们叫做负的0。25。这个时候。所有大于正的0。25的数据都会被截断成为0。25。所有小于负的0。

25的数据也会被截断成负的0。25。而介于负的0。25和正的0。25之间的数据全部都会变成0。对,大家就大家我我再说一遍,就是正大于正的0。25都会变成0。25,小于负的0。25都会变成负的0。25。

而介于两者之间呢都会变成0。这个时候大家会发现我们的新的 vector上只会有三种数据,就是要么是正的0。5,要么是负的0。5,要么是0三个数据的话,我们可以用两个be就能表示了嘛。比如说我们零的话。

就用00来表示,然后负的话就用负呃叫10来表示,正的,我们就用01来表示。这个时候我们会得到一相当于我们会得到1个16倍的,嗯就是减小。这个时候大家可能会看哎。

我刚才用one beat可以得到1个32倍的减小。我现在只能得到1个16倍的减小。那我tto beat岂不是没有那么厉害了。但是大家可以发大家会发现。😊,如果你的slashhold选取。比较大。

换句话说,就是你的两个正的schhold和你的负的ssh hold中间的gap比较大的话,你会把你压缩完了以后,你的vector会有大量的零。如果你有大量的零的话。

我们其实就不用用一个denense的 vector去存它了。我们只需要用一个se vector去存它。就我们把我们这些。嗯,就是不是零的这些东西,我们把它记下他们的key value就行了。

这个时候我们就不需要记那些零。所以这个时候带来的好处是什么呢?我们做了一些实验,比如说在accoustic model这样的做这种语音模型上训练这样的全连接网络,我们可以把我们的网络开销降低4000倍。

这就非常impressive了。就是说我们之前你全连接网络可能。很难达到线行的加速比。但是你把你的网络开销降低4000倍以后呢,所以你可能你就可以继续达到现行的加速比。

你的scalability就上去了。对,这就是我们去对梯度进行压缩的一个trick。好,但大家可能会说。你做一个,无论是你做one beat还是 two beat的 quant的话。嗯。

你都是一个近似呀,对吧?你们我们做one beat的时候,我们去我们是用一个平均值来近似,而我们用做tto beat的时候,我们去用一个sreshhold做近似,你都做了近似。那这模型能收敛吗?对。

确实我们发现,如果你只是打简单的去做做去这样的做一个近似的话,你的模型可能很难收敛。就是你会收敛的很慢,或者是你压根就不收敛,所以这个时候会有一个trick叫recid,我们去用一个叫残差的trick。

什么叫残差呢?就是说嗯我们第一我们这是第一行,我们现在显示的这个还是我们的原始的vector。然后第二行我们显示的是我们压缩以后的vector。这个时候我们会把我们的压缩以后的vector变成零一向量。

然后传发送数据。但是呢我们在本地要存一个叫残差的东西。什么叫残差?就是大家可以看第一就是第一个数据,我们没压缩前是0。1,压缩压缩完以后变成零了。这个时候你的残差就是0。1,就是0。1减0就等于0。1。

大家看最后一个数据,你没有压之前是0。5,你把它压了以后变成0。25了,所以它的残差就是0。25,是0。5减0。25等于0。25。也就是说。这个时候我们得到残差了以后。

我们当下一轮计算算出了新的梯度了之后,我们并不是对这个梯度马上的进行处理。就是我们不是对这个梯度马上进行压缩,再把它发出去,而是要把新一轮的梯度和我们原有的这个残差进行一个相加相加完了之后。

把相加之后的结果再进行压缩,然后再发送出去。这样的就是以此类推,我们到第三轮。然后因为我们压缩了以后又会得到新一轮的残差。所以我们在第三轮计算出新的梯度了之后,我们需要跟第二轮得到的残差再进行一个相加。

然后再进行压缩和发送。这样的话。其实你会发现这就是一个deeleupdate。就是说我们的嗯你可能当前这一轮你的梯度并没有被更新上去。但是当你可能进行了若干若干轮的计算了以后。

你的这个当你的梯度累加到一定程度了之后,嗯,超过比如说刚超过你的shold了,你就会有一部分的梯度会被更新上去。它将是一种延迟的更新的思想。但是我们发现它在实际中非常好用对。这是我们做的一些实验。

比如说我们在MXnet上考resonignnet,就是110层的resignnet的话,在s ten这个数据集上,我们会发现baseline是什么?baseline是我们不用任何压缩。

然后我们用base line,还要用one beat,还有wo beat之类的三种方法,我们会发现我们最后得到的accuracy几几乎是一样的。并且比如说我们在实验过程中。

我们去观察每个apple它的那个我们的当前的training loss或者是validation loss的情况的。你会发现他们的收敛速度也是很很像,就基本是很像的。所以就你可以认为嗯。在很多情况。

当然我现在不能说所有啊,因为我们可能只是做了一些嗯最传统的或者是最常见的这些模型。上我们用了one beat to beat,我们发现对精度不会有任何的影响。

这就是一个感觉像一个to good to be true的一个结果。对,但实际上就是这样。

okK然后接下来我想说就是另一个技术叫reard。这个技术也是对。对于我们做这种大规模深度学习比较要用的一个东西。这个技术实际上是由百度之前就是百度research提出来的一个技术。

然后呃当然不能说是他们提出来的技术,是他们最先把这个技术用在大规模深度学习上。但是其实rain reduce这个技术,就是可能几十年前就有了吧。他们做高性能计算的那在那个领域。

可能其实几十年前就有这样的技术。我们做ra reduce,我们说是什么呢?就是说。呃,我们比如说要把4台GPU,我们有有5台GPU吧,从GPU0到GPU4。有5台GPU我们要去进行一个同步。

比如说我们刚才用那个pri server的方法,你把GPU零当做server,然后我4台GPU对它进行一个呃当做worker。然后我每一次去这样进行同步,大家可能会发现GPU0它的。就是它的代价有点高。

就说我的无论是我们的network的那个就是网络的带宽,还是我们的计算能力,可能它都会成为瓶颈。

其实还有一个问题就是说我们去做primate server的时候,我们会发现。你怎么去划分server和worker,其实是一件不是那么容易的事儿。这是我们之前做过一些实验。

就是说在不同你对一个pri server的集群,你去对它进行不同不同的设置。比如说你给它配置不同的worker数量,不同数量的worker,不同数量的server,包括你用不同的网卡去对它进行。

就是这样的资源的分配。你在训练一段时间,训练同样的时间,也会发现他们得到的精度都是不一样的。换句话说就是。你在不同的资源分配情况下,你这个系统对资源的资源利用率是不一样的。

所以说我们用prim server这样的架构的话,我们可能。你要去调试怎么才能达到一个最好的资源利用率。我可以比如说既把网络带宽也用用到最高资源利用率,也把我的GPU的计算资源利用率也用到最高。

但这其实并不是一件非常容易的事儿。就是对,但然我们实验上就这是我们当时实验的一些图,大家可以看一下。

所以说我们的real reduce的另一个好处是说,这个是我没有一个叫中心的pri server的节点了。大家所有的都是P two P的方式,所有的机器都是相当于都是平等的,人人平等。

用P two P的方式,我可以让我我想要每一台机器的计算资源计算开销计算的资源利用率。包括我的嗯网络开销,网络的利用率都达到最好。

所以这是re of reduce的一个 motivation。具体real reduce是怎么做呢?就是他给呃我大大概简单的讲一下吧。

这这这这这一部分的slides是那个主要是百度research那个从那个blog里面抽取出来的。对,比如说因为我们的比如说每一台GPU现在。都有一个vector。

就是说这个vector就是我们的model。我们要在5台GPU之间同步这个model,我们怎么做?我们有5台GPU,所以我们这个算法要把我们的model划分为55份。

就是我们每一台GPU上的model都会被划分为5份。然后我们。第一轮我们叫做一个scatter reduce的过程。scatter reduce的过程怎么做呢?就是我们会把A0,就是我们把第一台机器的。

第一个部分的机器呃第一个部分的梯度发送给GPU1的第一部分。而GPU1的第二部分发送给GPU2的第二部分,就做一个peline的发送。对,为什么要这样发送?

就是因为我们这样的可以把所有的网络带宽同时利用起来。因为如果你是同时去传整个model的话,model之间有conflict,所以你就只能one by one一个一个这样传?

但是我们如果把它这样的像这样流水并行的方法,我们把它划分起来的话,就是我们整个集群的资源利用率可以被同时利用上。对。大家可以看一下这个发送的过程。第一轮发送完了以后。

相当于我每一台机器都收到了有我上一台机器发送的一个小的tck。这个时候我就得到了一部分的model。然后继续第二轮,沿着这个流水线继续发送。第三轮第四轮。对,当我发送到发送完了之后,就是我5台GPU。

我要发送4次。这样的话我在我就会得到在某一个创客下,我会得到一个完整的提度。比如说。对于GPU0来说,我的B chunk,我会得到所有的机器给我发送的信息。而对于GPU一来说。

我们的C窗会得到所有GGPU给我们发送的信息。这个时候我们的scatter use过程就完成了。然后其次我们要做一个organgaer的过程。

organgaer过程其实和scatter reduce比较相似,就是我们把我们每一台机器上这个完整完整的创口,就是某一个创客是完整的。我们要发送给其他的GPU还是做一个流水线的发送。

大家可以看这个过程。还是发送4次,5台GPU发送4次,6台GPU就要发送5次,以此类推。当我们在发做4次al以后,我们会会发现每一台GPU。都会得到一个最终的完整的模型。

这个时候我们就可以进行下一轮的计算了。对,这个算法是什么好处呢?就是说你会发现我们的网络的利用率总是同时总是利用到最大的。也就是我们同时所有的网络带宽都在都在工作。

而不会说比如说像有一些我像pro server的话,比如说我发送给你,没有发送给那个serv或者其他的机器没有发送的是没有发送的时间,我这台机器的网络带宽就被闲置下来了。

而像这样的re or reduce的,大家人人平等。所以会把整个集群的网络带宽全部分摊给所有机器,让我让这个集群的资源利用率达到最高。这是alge一个非常重要的优点。

但是organgether它可能会有一个缺点。就怎么说呢?就是organgaer你6台GPU你要发送5次,而你假如你有100台GPU呢,你就要发送99次。

所以与之而与之相应的就是你的latency变高了。所以organgaer为什么适合做deturning这样的任务,而不去不适合去做像pa LR这样的任务,其实和适合这个latency有关的。

当你的集群变得非常非常大,你的latency也会与之相应的提高,所以就会这里又会出现一个 trade off叫latencyband with的 trade off。就是我我完整的去发送整个模型。

我的band的利用率是最高的。但是我的latency会也也会变得很高。所以这个时候其实我们就有一种新的想法,就是说。

呃,我们怎么去做一个trade off,在band和嗯latency之间做一个tra off。这是我们刚才可以看到一个做organgaer,就这大家可以看到这个organgaer做完这一步做完了之后。

我第一台GPU实际上只完成了两部分的。嗯,得到了最终的结果,但是还有两部分没有得到结果。与之相对应的,我每一台机器上实际上都只得到了三个窗是完整的数据。但是另外两个窗没有得到完整的数据。

或者说没有得到完整的信息。但其实这个时候我们可以不用让他们继续再发送下去了。这个时候GPU就可以开始训练。然后训练完了以后,我们再继续用这样的allga的。

就再继续用一个rein or reduced方法来完成一个同步。具体这个。比如说具体的这个band就就就是你去发送多少次,你可以去设就也是用户设置了一个boundund。

就是你很像那个之前咱们说的SSP比如说SSP你用户要设置一个boundd为3,就是说我最快的worker,不能比最慢的worker快三步。比如说这个boundd,你也可以设置。

比如说你设置为三意思就是说我只要有3块嗯机器,拿到了我的我呃也有不是33块机巧,就是一块机器上有3个t,拿到了完整的信息的话,我就可以进行下一轮的计算了。这样的话也是一个band,大家可以想象一下。

如果你有4台机器。你如果你的bound设置为4,那样的话就是说我我要拿到一个完整的呃模型,就是最传统的ra or reduce。然后如果你的呃你有四台机器,但是我把棒的设成二。

就是说我只要有一半的模型被更新到了,我就可以开始继续下一步的工作了。那这样的话相当于我可以节省出一半的latency的开销。对,然后这所以这个算法是我们之前做的一个工作。

我们把它叫做elasticreor,就是弹性的reinor。

大家可以看一下,这是我们一天实验结果,就是。嗯,比如说你给大家看第一张图吧,第一张图说的什么意思呢?就是说我的计算和网络的开销的一个tra off下面的横坐标是说我选取不同的棒的。

比如说我有256台GPU。如果我M选成256的话,就相当于我要做一个完整的real reduce。也就是说我的数据要传递256次。这个时候大家可以发现红色的部分,就是网络开销是非常大的。

而而我们的计算开销并没有那么大。因为因为因为为什么计算开销不大?就是说呃不是说计算开销,就是我们计算的总时间。因为我们在这种情况下,我们的模型收敛的是最快的,所以我们可能只用做比如说50个ap。

然后模型就收敛了。但是假如说你把M换成了128。就是我们把棒的换成128的话,这个时候。nettwork的 trafficff会降低很多,但是我们的呃模型变得不一致,所以收敛会变慢。

所以你的计算开小会变大。所以最终比如说我们做了个实验,在256下,我们发现选取M等于32,可以达到一个就是总时间最好的一个平衡。对,这就是我们之前对得到一些结果。

就是也挺有意思的对大家大家如果感兴趣的话,到时候可以看看我们的论文。

行,就是今天大基本上大部分我想讲的一些技术性的东西,基本就讲完了。然后我看看时间。对,刚好差不多现在12点1个半小时啊,后面就是我想想大概说一下怎么去学习分布式机学习的工作吧。

其实分布式机机学习这个领域。呃,是挺大的一个领域。然后你听一次这样的talk铁定是不能都知道的。而且我只是也是只是把我我自己比较了解的一些东西分享给大家。然后如果你真的想深入这个领域去做的话。

我觉得最好的一个方法就是你一定要去读现在最好的这些系统的代码。就是你一定要去看看别人的代码是怎么写,怎么去实现的。就是如果你呃当然你这个前提是你真的想成为就是做分布式机器学习领域的专家。

你想你比如说你能够去设计自己的分布式机器学习系统,比如说你的想设计出像X级 boostos或者像MXnet这样的系统的话,你一定要去读别人的代码,看别人是怎么做的。然后把自己的编程能力提高。因为。

这样的系统可能大家去用机器学习,只是我去调一调python,调一调R这样的编程语言就行了。但是你要去真正去实现这样的机器学习系统的话,你可能需要非常扎实的C加加功底。

所以这个C加加功底不是说我一天两天就能学会的,你需要你真正的去浅下心来去看一些就是开源的代码,这样可能会比较有效果。然后。其次呢我想说一下,就是说。我们要不要看论文?就其实分布式机器学习论文没有那么多。

就是大家可以把一些经典的论文看一看就行了。对,然后就是主要是要了解,就像我刚才说的,要把你的。一一条线理清楚,就是分布式机器学习是怎么从最初的那个m6的模型演化到现在。这些我们来讲了一大堆这样的模型。

一步一步怎么过来的。就是大家搞清楚一个重点,就是分布式机器学习在干什么,干的就是就像我们刚才说的干的就是如何去同步模型。就是你凡是你能想到的如何能够让我们的模型同步更高效。

就是我们分布式机器学习在做的工作。对。具体说可能你会看到有大量的模型,要就有大量的paper去讲他们用了什么什么样的方法,什么什么样的方法。其实万变不离其宗就是你只要掌握了最核心的这个东西,你就不会对。

就是被这些这么多的paper去冲昏了头。就相比于做机济学习理论或者是机础习算法的这些paper来说,其实分布式机器学习系统的paper已经非常少了。因为去做一个系统确实是非常。嗯。

需要一个非常持久的过程。而现在其实可能更多的研究人员喜欢一些短平快的方法。比如说我吹一个model,调挑餐,我可能就能发一篇比较好的文章。

但是如果你真正真正的是想打下你一个坚实的做机器学习系统的基础的话,就是一定要沉下来去看一些去学习,真正的在就是业务中跑的这些代码,然后去从中学习,从中体会。我觉得这个才更有收获。对。

然后在此我也可以做个宣传吧,就是ex learn这个系统也是我在博士期间开的一开就是开发的一个系统。然后昨天刚开园。

然后我今天看到他在git upub上的那个C加加 trending上已经是仅次于tensor floor排名第二了,还是非常意外。对,这个系统其实我们想做的是说。

我们的对于这种大规模的pae的这样的任务。比如说FFMFM,还有像logistic regression这样的任务,我们怎么能够用一个统一的架构把它们全部架构起来。

并且让他们的performance达到最好。我可以简单的让大家看一下,这是我们的一些就是实验数据。就是我们基本上就在我的一台macbook上面测试的话,我们现在比如说FM的。

我们的实现可以比力部FM快13倍。这是一个其实是一个挺难的优化。对,就是如果大家感兴趣的话,可以大家可以再看一下这个行这个工作要X learn。就是你们直接上gitthub搜 x learn就可以了。

然后这个工作其实我也是会接下来把它推进的一个工作。其实我们的微on是说我们要把ex learn打造成和像比如说X级 boost的,然后MXnet一样这样的优秀的机器系统。

基本上我们想让它成为做这种大规模吸疏学习的一个业界标准吧。对。对,好,接下来哈就是做做广告吧,帮区月。😊,就是因为确实可能对于有些刚入门的基础用户来说,小白用户你可能确实自己一开始也没有什么头头绪。

怎么去学习。对,大家可以看看7月的这种公开课。然后这种公开课上,可能对于刚入门的这些嗯初学者有比较好的一些教你领入门的方法吧。不过当然就是师傅领进门修行,还是靠个人。你学完了这些课以后。

一定要有自己的思考。如果你想要进一步的去了解你的就是积极学习,包括分布式积极学习这些最前沿的工作。你我觉得一定要有自己的思考,并且一定要不停的去尝试写代码。然后读读优秀的代码。因为计算机科学的话。

你理论上paper上说的东西再多,你最终不把它实现出来,不能让用户真正的用上都是白说,其实现在像这种灌水的文章是非常多的。但是真正你怎么能够把它做出来,做出游影响力的事情,才是我觉得是更重要的一件事吧。

行,那我今天的课程大概就到这里了。然后大家也很辛苦,等了一个半小时了。然后我最终。我留十分钟的时间吧,我来看一看就是现在留言板上的问题来给大家做一些回答。嗯,好,谢谢大家。😊,呃,我看看我就从最开始。

我就从最开始的问题开始看吧,然后。给大家做一些解答。呃,第一个问题是说MR就mapreuce的模型。更新是在什么地方做的对,这是个好问题。就是说mpreduce我们其实去做完一个mapreduce以后。

我们d到磁盘上的只是一个梯度,对吧?这个时候你做更新,实际上你是需要把这个自己再写一个另外额外的程序,然后把你的梯度从这个磁盘上取出来,取出来,然后在这个程序还要把你的模型也从磁盘上取出来。

然后这个时候做一个呃 mergege或者做一个叫update,更新完了以后,然后再把我们的模型d到磁盘上,然后对下一轮的mapreduce进行嗯计算。其实这个过程呃如果用过monho的用户的话。

你会发现其实是monho帮你完成了。就是说monho里你只用去就是选择一下你要什么样的模型就行了。这个过程是monhou这个库会自动模拟完成。如果你是自己想写mapreduce程序去完成这项工作的话。

你需要写一个额外的程序,然后对local的这个模,就对每一个reduce上这样的loc的模型。去对他做一个更新。嗯,还有一个问题,spark的瓶颈主要是失败,重事机制不完美吗?嗯,不完全是。

就是park的。我们刚才说主要的瓶颈是说,对于这种大模型来说,spark是一种同步,并且是一种这种叫做boardcast的模型。这样的模型的话会有两个问题。就是一个是说我同步去计算,我会有很多的呃浪费。

就是说我的呃我我算的过程中我不能进行通信,这样会对我的资源利用率有一些浪费。然后其次就是说我每一次我们会把我们的model从我们的spark driver上bro给每一个worker。这样的话。

如果模型很大的话,driver上的网卡的压力会非常大。所以这是主要是sk的两点嗯最重要的问题。我来继续看一下,嗯,用primed server来分布式存储模型指的就是模型定性嘛。嗯,不是的,就是。

primt server还是数据并行,就是大家去想就是什么是模型变行,就是模型并行,一定是说我把一个模型拆到不同的机器上。但是我每一台机器在算的时候。

我用的是一个相同的训练样本去去对当前这个模型进行梯度计算和更新。而数据并行是说,我每一台机器上都有一个完完整的模型副本。就大家能体会这样区别吗?就是说呃模型并行是说我每一台机器上有一部分的模型。

但是数据并行是说我每一台机器上有一个完整的模型副本,而priate server只是一种抽象,就是priraate server只是说我把模型放在一个叫在server的呃一些节点里,因为可能模型很大。

我需要用一些分分布几台机分布式的几台机器来存。但是我每一台worker上计算的过程中,还是有一个本地的模型的完整的副本。所以只要你有本地完整的模型副本,并且你把数据划分给了不同的机器。

这样的模型并行方式就叫模数据并行。而模型并行一定是说我把模我每一台机器上都有完整的数据。而每一台。而算每一个模型的时候,算每一个训练样本的时候,我会把用相同的训练样本对当前的模型进行更新。

而且但是只不过是每一台机器去更新,就是模型的一部分,这叫模型比行。你就最简单的,比如说在多GPU上,你可以认为就是我把每不同的层放在不同的GPU上。比如说每一层负责一个每1个GPU负责一个一不同的一层。

这种你就你就可以认为它叫模型比行。嗯,spark是说不适合模型比较大的训练吗?对,就是这样刚才说的。有人尝试把tensor floor和yrn。或者park结合,超哥怎么看啊?对,是这样的,就是说。😊。

嗯,我们刚才说park是不适合用来训练这种就是呃大规模,就是怎么说,就是模型比较大的机器学习,或者是我们通信开销比较大的这样的机器学习任务。但是它怎么跟tensflow结合呢?其实很简单就是。

大家用过机器学习,一定会用一定知道一个东西叫cross validation,对吧?就是我们要去调参。比如说我们可能要调10次参数,我们才能得到一个最好的模型。那这个时候我们其实这是一个非常巧妙的方法。

我spark我训练训练的很慢。但我用它拿我拿它来调参不就行了吗?呃,具体怎么做呢?就是我把我用spark实际上就相当于一个分发器,我把我的模型分发给呃10台机器,这10台机器。

每一台机器还是用tensorflow来算,相当于还是一个单机的运算,但是我是拿spark来做超参数的调参,换换句话说,你可以认为spark在这个时候只是当做了一个脚本,就是我只是用来分发任务的。

然后让10台机器上的呃tesorflow来举算,然后把算得到的结果。然后我们看哪一个超参数是比较好的。然后spark给你收集起来。对,这其实就就spark。呃。

thetenor block spark一些结合的地方。有文章说异步的收敛结果不是很好。对,就是我们刚才说了是这样的,就是E步的收敛结果是不好。但是我的嗯系统的利用率是最高的。

但是所以我们你如果要去做一个trade off的话,我们会有这样的SSP这样的协议。就是说我们在异步和同步之间,我们去做一个trade off。比如说你设置一个boundund,然后去做这样的SSP。

对。呃,one one B quantization不会损失精度吗?对,会损失精度。但是所以我们说我们要用一个trick叫rec,就是我们要用一个残差的数组来让我们这个损失就是尽量的降低。

当你用了这样的reced了之后,你会发现你的那个精度并不会损失。呃,为什么one beat比two beat慢?呃,是这样的,就是说。one beat你做完压缩了以后。

你会得到一个就是32倍的减小计算的减小。你two beat你压缩了以后,你因为你是spapars的,所以你可能会得到一个非常非常大的减小。比如说像我们做的任务。

可能就我们一些实验可能可以达到上千倍的减小。对,所以这就是为什么就是 two beat的效果可能更好。呃,行行,我觉得差不多了。就是今天这个分享我觉得差不多了。就是大家如果有什么问题的话。

可以加我的微博,然后。😊,然后可以来我微博上问。然后嗯好接下来这个PPT,然后我也会和7月这边呃沟通一下,看怎么可以分享给大家。然后大家有什么问题可以。那个来问我吧,包括还有像我最后说的。

大家可以去看一看那个ex learn的那些,就是ex learn的一些代码,包括推荐李牧莫神的prime server,包括DMLC的MXnet,然后都是挺好的代码。对呃,微博名我给大家打出来吧。行。

马超teminok好,今天的直播咱们因为时间原因,大家都去吃饭吧,大家很辛苦。行,那大家到此为止了啊,谢谢大家。😊。

人工智能—机器学习公开课(七月在线出品) - P8:感性理解GMM - 七月在线-julyedu - BV1W5411n7fg

呃,我们现在呢我想从一个基本的一个地方跟大家聊这个业务算法的推导哈。首先跟大家回忆一下极大自然估计。这个东西举个例子哈,举个非常简单的例子。比方说我现在有10个硬币,我10个硬币,我抛硬币,我可以一抛。

它可能是有正面朝上或者反面朝上,对吧?我就如果正面朝上,我记上一个正,如果又抛一次还是正,我就再记个正。第三呢可能反面朝上又记了个反,对吧?我做十0次抛硬币的一个结果。

我最终看到了是一个正正反正正正反反正正这么十0次的一个样一个一个样子哈,那这样子。你能够估计一下我这个硬币,它。抛一次朝上的概率是多少呢?对吧能估计吗?我们可以这么来考察这个事情哈。

那我假定每一次碰硬币结果为正的概率,我就假定是P,你不让我估计嘛?我就假定你是P,我就算这个P就好了嘛,对不对?我用小P来表示哈。那第一次抛硬币他。看到的结果为正OK那这样的话。

第一次这个事件发生的概率就是P。第二次它还是伪证,它的发生的这个事件发生的概率还是P,对吧?那第三次是反,所以说这次发生的概率是一减P,对不对?所以每一个都ta写出来就是这么一串式子。

我们如果假定每一次抛硬币之间是独立的那这样10次抛壁我看到的最终的概率值就是这么一串,这10个数字相乘,而这里面其实显然有其中有7个是P有三个是一减P。所以这个东西就等价于P的7次幂乘以一减P的3次幂。

对吧?而这么一个东西,我们可以把它假记作大P。这个大P是什么呢?这个大P是关于小P的一个函数式子。我现在想做什么呢?想看一下小P取几的时候,可以使得这个大P的值最大。因为为什么呢?

因为我现在看到了这十字旁边的结果是这样子的。既然我看到了这样一个内容的话,那这样子我就认为存在即合理嘛。我看到的这个现象就是能够使得背后的这套机制发生的最大的那种可能,我才能看到它,对吧?

我就这么简单认为那这样子我就让你这个概率值取最大的时候,这个小P取几。这种思想就是几大思然估计的想法哈。那你会估计你会计算这个值小P取几的时候,大P最大吗?我稍微等一下哈,大家会算吗?也就是这一页哈。

也就是这一页,我其实本质上要算的就是让这个值取最大,而P呢是从0到1的那请问P取几它能最大呢?比方说刚才有朋友说到是P1等于0。7,对不对?为什么是0。7呢?这样一个函数。如何去得0。7呢?好。

你们说到求导。直接求导是不合理的对吧?就直接求导可能你求不出来。你直接对这个函数对P求导的话,你这是一个P的7次米1减P的3次幂,根本搞不定,对吧?好,非常好哈。😊,先取对数。

因为这个有机体学一般的朋友,对吧?大家应该很熟悉了,我直接取对手,然后再求导就搞定了哈,对吧?这种东西那这样我就能求出来P等于0。7,大家有兴趣可以算一下啊,呃估计没写,大家可以自己算一下哈,0。

7的这个是关于加3估计的一般形式了,这个咱就不用管了哈,对吧?😊,呃,不不不不不不用转了图函数哈,这跟凸函数没关系。😊,就直接求几大值就好了,它本身就是秃的。对吧那它本身就是凸的东西哈。

不用管它这都是凹的,你不用管它哈,但是你就直接求导就是了。好,没问题哈。然后呢,我们现在把这个问题加大一些难度哈。钢材本质上抛硬币其实是一个两点。抛硬币嘛,它只能去两点左要么为正,要么为反。

这是两点分布。那我们把两点分布把它变成高斯分布,你还会算吗?对吧比如说现在样本是X1X2的XN给的的这N个样本。现在呢假定这N个样本,它们来自的这个总体是一个高斯分布的一个总体。

然后这个分布假定它的均值是缪方差是西igma,呃,它的那个标准差是西ig玛,但是呢这两值是不知道的。请问你能够根据这N个样本值来估计参数缪和西格ma吗?就这么个事情哈,这个题目大家会做吗?稍微等一下。

好,没问题哈。仍然使用刚才我们跟大家说过的极大自然估计的方式来去求解这个过程哈,完全一样的。首先我们写出极大高斯分布的概率密度函数是长这个样子的对吧?当我给定命u sigma的时候。

这个它的这个概率密度是长是是是这个函数,这是本没问题的对吧?那我们就把这个N个样本带进去,因为大XI这个样本我们把它是小XI嘛,把它带进去,以此得到这么个东西,这个是某一个I的。

然后我们把它乘起来I从1到N,这是一个它的自然函数,为了求极值。刚才我们说过了,对吧?其实是要取对数再求导是方便的,所以对它先取个对数变成似然对数自然函数。本来这个是一个大L,对吧?这个函数哈。

把它变成小L,对它取对数,这是一个若干个值的乘积取对数,因此这就是把这个乘积符号就变成加口符号。因为这是一个若干值的乘积取对数嘛,那就是他们分别取对数再加和嘛,对吧?这这是性质了。

那这样的话就变成这个东西,大家注意。这个系数和这么一个E的某某某次方也是两个数相乘,对吧?这还是对数嘛,所以是对数它加上对数这一坨。把前面这一个放在这儿,对这么一个东西取对数,后面这个是什么呢?

注意这是指数的这么一个东西,它先取异这么多次幂,然后再对这么一个次幂取对数。那就这个东西取指数再取对数,那就相当于白做呗,因此把这块就拿出来,对吧?是长这个样子的。这是它的变换,对吧?这两个是相加的。

而这个东西是一共有N个嘛,把这个2分之1,这是它它的平方的2分之1次幂,把负的2分之1提出来放前面来,得到这个对吧?而这个呢一共是有N个嘛,把这个。嗯。🤢,这个这个西ig格玛这个常数提出来对吧?

这个二西玛提出来里边是变这个样子。因此我们把它就整理得到了这么一个东西。大家发现这个东西就比刚才要。看起来就舒服很多了。对,这么一个式子,我分别对缪求偏导,让它等于零算一下。

然后对西igma求偏导等于零算一下。那这样子我就可以最终得到缪和西igma了,对吧?这就是关于。高四分布的参数估计的结论,大家可以算下就好了哈。然后。我们就不再详细的跟人家谈讨这个事情了。

这一块因为是咱在呃前边跟大家。聊过对吧?就是关于他的计算哈,能得到这么一个东西。这个就是me和s方它的结论哈。好了,这么一个东西我们拿到手之后哈,咱稍微的做一点点的分析。首先我们看这个这是什么意思呢?

这是指的对X拿到手的这些样本做加和,然后除以N。那显然这就是样本的均值嘛。我们是用样本的均值来去估计总体的这个均值。对吧这就是我们的吉大思然故意的结论。而这个呢是我们对样本求尾方差。求尾方差。

然后对这个用这个尾方样本的尾方差来去估计总体的方差。之所以说尾方差是因为样本的方差本来是除以N减1的,而这里除的是N,所以我把它叫做尾方差哈,对吧?它不是真的方差,但是呢。不管是高斯分布。

还是呃不管是这个呃其他四量估计还是举估计,其实它的结论对高斯分布而言都是一样的,都是伪方差来去算的。这个呃做它的估计哈。这个呃关于为什么是除的N,而不是N,为什么除N减一是方差。呃。

除N就只能把它叫伪方插了哈,咱已经解释过,咱也不说了哈,大家知道就好了哈,总之这是一个。如果你除的是N的时候,其实偏小,你的估计哈。这样一个东西哈,不管我们刚才说的那个伪方差这个概念哈。

但其实这个东西跟我们的直观是很接近的。对吧我们直观上觉得你样本的方差跟总体是一样的,样本的伪方差跟总体也是一样的。等会儿我们用这个作为我们后面分析的一个基础哈。好了,我稍微等一下。

大家看前面这部分有问题吗?后面我们就要开始EM算法的核心内容了。产面这块有问题吗?😡,OK哈,然后我们进行下面内容哈。呃,现在呢我们讨论一个事情,就是假定我们现在挑选出了1万个志愿者。

然后呢测量了他们的身高。这样子我们手头上就拿到了1万个身高的数据。现在我们正常而言,这1万个志愿者里面是有男性和女性的。我们现在做一个假定,假定男性的身高服从高斯分布。

均值是缪一方差是呃标准差是sigma一,女性服从另外一个高斯分布,它的均值可能是谬2,它的标准差是sigma2。现在如果说我们手头上没有拿到样本的性别,只拿到了样本的高度。

那么说我们能只用这个高度来去估算M一sigma一M2sigma2吗?这样一个问题哈,显然他是没有对随机变量把它完全观测到。如果说你完全观测到的话,假定说我看到了这1万个志愿者。

他的身高到底是男性和还是女性的。你比方说那这样我就那估计这人就不在话下了。比方说我想假定知道男性还是女性哈,那我就按照我就光把男性的那个数据拿出来。那在我眼中,这男性的这里边,假定有4000个哈。

这么多个,反正多少多少个不管了,那我说我们就可以直接带刚刚得到的这个结论嘛,不就拿不就能计算命部sigma方了嘛,对不对?就搞定了,女性同样计算嘛,现在问题是我们没有拿到她是男是女,只有身高数据。

而没有性别数据。这样子这种数据它是不完全的数据。我们要想估算。就只能想一点手段了,对吧?呃,另外我举了个别的例子,就是说如果你是一个图像,想让它进行前景背景分开呢,对吧?这两个问题哈,等会儿咱从感性上。

从理论上以及从代码上跟大家做一个分析哈,如何去做这个事情。呃,别忘了EM算法和聚类很相似哈。对吧他们都是解决无标记的样本的分类问题的。好了哈,现在呢我们把它先做一个形式化的一个表述哈。

就是形式化的表述就是怎么回事哈,就是假定我们现在是因为的X,它里边呢是由K个高斯分布混合而得到的,比如说我们拿到的这个身高数据,它就是有两个高斯分布混合得到的对吧?而每一个样本。

它取高斯分布的概率是拍一拍二到拍K,一共K个嘛,对吧?你比方说我假定说举个例子,比方说我拿到一个样本是1。90。我拿到这个样本之后,我就。😡,我就可以去猜嘛,那这个样本是男性的概率是90%。

是女性的概率是10%,就这意思哈,对吧?就是那个例子里面就是有两个一个样本,有对应着背后有两个高斯分布的概率。如果是有K个呢,那就是有K个高斯分布的概率,拍一拍二到拍K哈,这么个记号。另外呢。

对于第I个高斯分布而言,它的均值我记作M一,它的这是标准差啊,它的标准差记做西igmaI。然后呢,我们现在手头上观测到了M样本X1X2的XM,现在让我们来估计这个拍这是个向量喽,对吧?

这个缪这也是个向量和这个西igma就这么个意思哈。好了,这个就是高斯混合模型。它的研究的内容要做这个事情哈。手段就是EM算法。呃,注意哈,就是如果有问到这个西maI是数还是矩阵是吧?

如果说对于我们这么一个数据而言。它是一个身高本身是一个标量,对吧?那这样子。我们的这个分布,这个cmaI就是一个数。如果说我们拿到的不是身高数据,比方说我们拿到的本身就是一个向量,对吧?

在空间中的一个点,它就或者是一个N维的一个一个数据。那这样子的话,我们得到这个方差就是一个N乘N的一个呃方阵了,对吧?就是它就维度就上去了。比方说我们可以把事实上我们可以把。

一个数看就是一个1乘1的一个方阵嘛。所以说在线性代数的系统下,数和方阵几乎是一样的东西,对吧?我们就可以把它呃直接看作是一个方阵了,对吧?OK呃,没问题了吧,还有别的问题吗?😊,🤧嗯。OK哈,然后呢。

我们下面来琢磨一点事情哈。😊,正常而言,我们需要建立一个目标函数哈,是长这样子的。呃,如果对于第K个类别而言的话,我们有一个均值是MK,它的标准差是西maK。在给定这么两个参数的时候,XI服从高斯分布。

也就是NXI given谬K西maK对吧?这个N就是那个正在分布,对吧?咱就那个那个那个那个式子其实长这个样子嘛,在前面咱解给过,对吧?就就长这个样子。对吧所以说我们后面用这个记号来记一下而已哈。

大家这个应该很熟悉了,对吧?然后记得这个东西,这个是DK个高斯分布,对吧?那我们现在手头上一共有大K个分布嘛。那对于D小K个分布而言,它的属于它的这个概率是派K。我们刚才记号记了嘛。

那么说让小K从一到大K做一遍加和,这样的不就是一个混合的高斯分布嘛?对吧对这样一个混合的高斯分布这么一个概率,我仍然可以使用极大自然估计,把它们乘起来取对数进建立我们的目标函数嘛。而乘起来取对数。

那就是先取对数再加和嘛,所以说就得到这样一个东西,注意这是一个对数自然小L,它呢。未知变量是我们这里要估计的这个py缪和西igma这三个值,对吧?而X是我们样本是已知量,对吧?

这本来应该是我们利用极大自然估计建立的目标函数,对不对?大家看这个式子有问题吗?就是这样哈,就是说我刚才看到有些朋友这个老师这个这个这个留言说这赶紧go go go哈。这个咱学机器学习这门课程的时候。

千万不要抱着这个呃简单的就赶紧过的那种心态哈,一定要把每一步走扎实了。要不然呃你会突然间发现。前边的每一步都很清楚,突然到了某一步时,完全看不懂了,对吧?这样子就说明什么呢?说明在前边的某一个地方。

你走的太快了。😡,对吧当前面走的太快的时候,你在后面再走,你会发现走不下去。嗯,这个是咱一定要去注意。尽量避免这个事情。所以我们一直强调咱把这个呃。因为比方说咱咱继续学习内容哈。

里面会把这个呃拿出那么3次到4次课,特意去跟大家复习数学基础,然后再去讲后面内容哈,要不然大家呃退公式啊,这个老是没感觉,对吧?是中文没没东西哈,好了哈,这个是本来得到的极大自然估计的一个结果,对吧?

然后呢。嗯。哦,对,Cma看其就是就是装那个就是标准差。这嘛K就是标准差哈。对吧。就是你如果写平方就是方差了嘛,对吧?你写C嘛K本身就是端质差嘛。对吧。现在问题是这么一个式子,这里边有加和。

然后乘积做加和再取对数,最后再加和这样一个东西其实只是理论上的可行,你能够求偏导得东西,它事实上是不方便去求积值的。我们这里面呢需要分两步走。直接去做是不合适的,分哪两步呢?我们来猜一下。

大家注意听这儿哈。我们这么来想。就是。我们代估计的这个数据哈,它首先它是由每一个组分来去形成的。你比方说呃咱那个身高数据哈,它就是由两份组成,要么有比方说1米90那个数据哈,他有90%是男性。

10%是女性,就这意思,对吧?他就来自于某一份的有一个概率。我我再强调一句这个就是咱咱那个例子的事哈,就是说呃咱后面会说这个1米90这么一个样本,我们说他有90%的可能是男性,10%的可能是女性。

我们后面真的就会把这个数据把它分成两部分。一个是1。90的90%,大概是乘出来一个数,1。90乘10%大概是0。19这么一个数。我们就说他有90%是男的,有10%是女的。我们真的就这么算哈。

但是这只是一个数学的计算中间过程哈。咱们不要把它就如果是在现实生活中这么说,一个人不合适,对吧?我们后面真的会把它分开做哈。呃,大家知道这么一个数学思路就好哈,对吧?咱们不探讨那个什么,对吧?

后面来我来来我们承认这么个事情啊,就是这个人有。😊,九成是男的,有一成是女的混合得到这么一个人哈。我们这么来看这个事儿哈对吧?我们来想想哈。😊,对于这样来讲的话,每一个样本XI这么一个样本哈。

它来自于DK份的概率有多少呢?对吧你比方说如果对刚才那个例子1。90这么一个值的话,它有90%是男的,有10%是女的那这个90%可以怎么算啊?

如果我们是已经知道了M一sigma一M2sma2那些参数的时候。如果是已经知道,那么说我们就可以把1。90这个样本带进去算一下这个高斯分布的值是多少。没错吧。

总能算出这个NXI given milk sigma可以吗?因为这个东西刚才大家已经见过它的那个函数式子是长这个样子。对吧这是一个非常正规的式子嘛,你把X带进去了,如果缪和西马还都是已知的。

总能算出一个概率密度值嘛来来嘛,对不对?所以这个值是可以算出来的。OK这是。呃,这是这样一个值可以算。另外呢。这个假定这1万个样本里边哈可能有3分之1是男的,3分之2是女的,对不对啊?

这个它本身呃什么情况都不知道的时候,有3分之1的可能性是属于男的。所以说前面再乘以这个拍K有多少来自于男的,对吧?那乘完之后这一部分相当于是什么呢?相当于是第I个样本,它来自于第K个组分的概率。

对不对啊?这是这么一个式子,得到这样一个。呃,很怪异的一个一个一个一个结论,对不对?只不过呢我第I个样本,第一份可以这么算,把那个m一s一带进去,拍一带进去能算是个值了。

把拍2谬2s2带进去用能算是个值了,对不对?把K值也算一个单心出来一个值了。你这些值加起来应该等于一啊, unit逆值概率啊,对吧?所以说呢我分母除以它们的一到大K所有值的加和是为了做规划,对不对?

所以底下这个没有什么更多的意思哈,更关键的是分子这部分,分母只是规划用的,而分子才是真正的咱要做的那个刚才那个事情,也就是第I个组分来自第K份。他的概率值。OK这一小段大家看有问题吗?

这是咱理解EM算法的最关键的一个公式哈。这是就是整个的咱今天这个公开课最重要最难理解,最核心的东西就这一页,这是最核心的内容哈。就这个部分。啊,大家看看有什么问题,我们现在来沟通讨论一下啊。😊,嗯。

似然函数对于离散情况是对数概率,连续时确实对数概率密度,极他似然是说出现数据的概率最大。对于连续情况怎么联系?概率密度最大就等价于概率最大呢就是看归程这个要不咱这样呃。

那个咱在那个应该你是那个就是应该是咱那个9月学习班的,对不对?然后咱那个咱再探讨哈,这个咱今天就不再说这个事情,说那个自然函数这套内容了哈,咱今天把把思路放到验M算法里面去。

假定自然那个那个那个那个极大自然估计这套东西,你承认了,并且咱认为对了哈,要不然这个事情做不下去了。😊,对吧。嗯,O可看大家的问题哈。😊,拍是什么?对吧?我们先来说这个事情哈。这个拍的意思是指的。

如果我这个里边对于刚才那个身高数据而言哈,它可能是有百分之呃1有1万个样本。那这样的话可能不是正好55000个男性,5000个女性,对吧?他可能是只有这个呃比方说咱来自工科院校哈,只有2000个男性。

来有8000个女性啊,有师范院校哈,有2000个男生,8000个女生,这不是这个东西哈。那如果这样一个东西拿到样品数据市场这样子的,我从这一万个数据里面随机选一个人出来,选到男性的概率有多大呢?0。

2嘛。就2000个除以1万个嘛,对不对?0。2嘛,选出女性的概率是多少呢?0。8嘛,那个0。20。8就是这里边所谓这个拍一拍二到拍K那个东西哈,它是鲜艳概率。我们如果是从术语上来讲的话。

我们可以把它讲的很很很通俗的就是这个玩意儿,对吧?拍开始管这个事情的哈。好啊,这个应该说清楚了。然后。拍和R的区别。哦,伽马是吧?呃,伽马是是另是另外一码事儿,对吧?伽马只是个记号,对吧?

用伽马是因为显得比较高大上,对吧?没什么任何意思哈,它就是个记号而已,这是个概率值。这个概率值呢,它和I有关。因为我想算的是它第I个样本,它和K有关。我想算的是第I个样本属于第K份的概率。

它就是概率值本身记号而已啊,没别的东西。伽马IK第I个样本属于DK号的概率,没任何新东西哈。这个是不是类似b全盖率公式呢?嗯ん。其实不是哈,它仅仅是个规划,仅仅是个规划。其实不是全格力公贝是全格力公式。

贝公式哈。嗯,计算这个一会儿用来做什么呢?马上告诉大家,计算这个用来做什么,不要急,马上就会说啊这个东西一了它马上就能出EM算法的结论。就这个哈。PI等于1除以K2I那个均情况是这样子的对。

有点像鲜艳吗?是的,就是那个拍的有点像鲜艳,对吧?😊,求和只是为了做均做规划的底下这个求和。羚言阁主问的求和应该是底下这个意思吧。求和仅仅是为了做规划。因为这K个数算完之后加起来可能不是一。

我这个概率啊概率的要求是等于一呀,所以我作为规划,没没做任何新东西,对吧?那这些PIK我们也不知道怎么求出来呢?好,这是个问题啊,就是说我们现在是这样。假定你如果知道了拍me sigma的时候。

这个值是能算出来的,对不对?假定你知道你就能算,现在你不知道,那怎么办呢?你就给我先猜一个出来。😡,瞎猜一个也行,对吧?你比方说给我这1万个样本的话,我就先猜有5000个男性,5000个女性。换句话讲。

拍一等于派二等于0。5%都是50%嘛。然后我猜这个男性的这个谬一均值是1。75米,然后sigmaK是5厘米,呃,是10厘米,然后呢。这个谬2女性的均值是1。65米,然后sigma2假定是8厘米,对吧?

我就先猜出来它假定一个值带进去就能算嘛。对吧,总能算出一个东西来。是不是可以理解为所属类别信息和数据分布独立,所以可以相成。呃,可以可以这么可以这么理解,真的可以这么理解哈。😊,呃。

这个其实你要不怎么理解也行。就是刚才雷刘凤云说的这个问题哈,就是为什么这个拍跟N可以成哈,因为大家在高中去去学过一个东西。叫乘法原理。就是你完成这么个事情,需要分两步,先从这男和女里面随机抽一个人出来。

再看这个人里面有多少个男多和女。有比方说1。90%,他有90%是男,10%是女,就就就强出来就好了。他就乘法原理。其实对吧。OK理解了是吧。😊,这个整体乘起来是什么意思?哦,刚才解释过了,对吧?

乘下就是它属于第I个样本,属于第K个类别的那个概率嘛,对吧?如果猜一个上面的猜一个参数带进去,可以算分母,难道要猜K个参数吗?当然了,当然要开猜K个了,你猜个你K个都要猜出来的。你看刚才我那个里面。

我拍一命c一,我猜的吧,拍2s命2cma我都猜的。😡,1。75米1。65米8公分,10公分,我都瞎猜的,拍到门说的对吧?这就是我猜出来的,先猜一个再说。😡,对吧。好,呃,这是这个贝叶斯的话。

咱呃下次课再跟大家详聊贝叶斯网络和。若干个有趣的网络的特殊性哈,比方说一码钩模型这个东西哈。呃,等会儿说为什么我们我们猜出来还可以估计,对吧?好了,这块这块应该是大家熟悉了,对吧?

我们花了很多气的来去解释这一样页东西哈。好,我们现在呢做点事情。先去猜一个拍 musicma,得到了伽马IK了。现在。我们做一个极大的一个改动。这么来想哈。我们把所有的样本点都拿出来。

那么说对于第K个组分而言,比如说刚才那个1。90米这么一个样本哈,你不说他有0。9是属于男的吗?对不对?我就把这个1。90这个数,我大家看留言区哈。1。90乘以0。9。呃,大家帮我算算等于多少哈。

我这个是我瞎说的哈,所以我们没算等于几,大家帮我算一下等于几啊。😊,1。90乘以0。9。81。71。1。9乘以0。9等于1。71,对不对?因此我就说。这个1。9的这个样本,它有1。

71米是南所给我贡献出来的。而还有0。1,也就是1。9乘0。1等于0。19,对不对?0。19米是女给我贡献出来的。我现在只想估计男这个组分的时候,比方说第一个组分K,比方说这是一的时候。

我就光把那个男的那一份给它乘出来,也就是把这个XI这个值跟刚才那个伽马值把它乘起来。对吧这个伽ma值是我就是它属于难的那个概率,那个那个情况,对不对?我们用这个XIE乘,那乘完之后。

相当于我比方说这个1。9这个数据哈,对吧?我可以这么处理一遍。那比方说我又来了个数据,比方说1。55。我假定说1。55这个数据哈,它可能有这个0。2的可能性是男的对吧?有0。8的可能性是女的那1。

55乘以0。2等于多少呢?啊,等于0点。0。31是不是?0。31对吧?那这样子我就说对于1。55这个样本,我同样乘以他的那个伽ma0。2就得了0。31。我说0。31是男的,剩下的那个1。55乘以0。

8等于等于个什么值,我不算了啊,得到一个什么值,那个值是女的,等会再说。总之,我先把那个男的那个拿出来,对吧?每一个都拿都做出来了,那我们不是假定了吗?这个DK个组分它是一个高斯分布呀,对不对?

比方说对于这个1。9米的,1。9来讲,它其实在我眼中不是1。9,而是1。711。55在我眼中不是1。55,而是0。31。我只看男的那一部分,对不对?不看女的,只看男的。因此我拿到手的是一个高丝分布。

高斯分布如何去进行参数估计来着?左边这个式子,这是我们刚刚通过极大自然估计算出来的对吧?而我们就把这么一个东西带到这个式子里面去,不就可以估计我们的新的参数了吗?而mK这个男性怎么算呢?

就是把这个XI换成这个里面的伽马XI不就这么一个式子吗?对吧?注意本来是把所有值都加完,这里边不应该除以大N的。因为我这里边哈比方说这个对1点9来讲哈,它只有0。9个难的。对于1。55来讲,它只有0。

2个难的,对不对啊?所以说我就把这个I从1到N所有的伽网值对K的那个值,0。90。2以及所有的那个值都加起来,得到1个NK。除的应该是NK因为NK才是真正的难的那个数目嘛,对吧?

它都是半个半个难的加起来的,对不对?因此是除于这个这样子得的是一个mlk,同样的把这个东西把这个式子这样一个东西伽马乘以XI带到这个里面来得到西igmaK的一个计算公式。对吧这就是m K smaK嘛。

而我们怎么估计拍K呢?这里一共有NK个男的,一共有N个人一除,不就是拍K嘛,对不对?NK是等于这个数把它带进去,长这个样子嘛,对不对?大家注意,我相当于刚刚去通过这个式子算出来了伽马IK对吧?

然后这一步我又通过伽马这个值乘以XI的样本。去得到了mlkK sK和拍K。当我得到新的这三个值之后,我把它再带回到这个里面去。就能对这个伽maIK得到一个新的更新,对吧?就不再是我瞎猜的那个0。

5个男的0。500。550%的女的,然后男性是1。75米10公分,女性是1。65米8公分,对吧?不是那个东西了,而是我刚刚算出的m K K派K把它带到这里面去,把它做更新了,更新完之后呢。

再带回到第二亿的式子来又得到新的m K s K派K,然后再带回来,再带过去,再带过来再带回去。最终我就能够最终把 milk K seven K和派K估计出来了。对不对?好了,这个其实就是。

利用咱的这么一个想法,非常感性的得到了。好的一个结论。有趣吧,这就是高斯混合模型的最终说法。OK。有问题吗?嗯,出职过极端有影响收敛吗?这个努比问了一个非常好的问题哈,如果出值过于极端的话。

你比方说我就假定里边有0。01%是男的,99。99%都是女的。男性身高均值是1厘米,女性身高均值是10米。对吧这种非常极端的这种初值,我会得到最好的,我仍然能够得到最终的结论吗?对不对?

这个问题问的非常漂亮哈。大家一定要注意。如果给另一个。很差很差的出职,我可能只能得到一个很差的结论。换句话说。DM算法它所得到的。仅仅是一个局部罪容。仅仅是一个局部最优质,不是全局最优值。

所以说我们一定要选择一个合适的出值,你不能瞎选的。呃,这是一个特点。你比方说咱其实在地学习班里跟大家聊过哈,K均值聚类方式就是一个。这个出之敏感的。如果你选的不合适的话,就会造成一些问题哈。

K均之距离也是只能得到局部最优值,得不到全球最优制的。这是他们的共同特点哈。因为我是沿着一个过程不停的去把它做。梯度的上升或者下降。但是呢一旦得到局部的右就停止掉了。这是关于它的特点哈。啊。啊。

创新讲法是这样啊,就是说这个我不敢说我是第一个提出的哈,就是说我觉得这种理解思路是最合理的,其实是。😊,比。比这个教科书上用各种各样的东西来去直接告诉大家怎么推出来的,要感性很多,要清楚。

要要听起来很很有也不难,对吧?咱可以把它说清楚,就是能说清楚的,比用公式推清楚要要好的多,对不对?所以我们先感性的去分析,等会儿我们理性的从公式上做推导哈,严格做,我们也要做,因为这是我们的立立身之本。

对吧?你都感性的东西你肯定不行,但是你光理性,你肯定这个事儿搞不成,对不对?光法律不行,还得有道德,是不是?就这意思了。嗯,迭代条件是的,迭代条件就是你经过多少次。

或者是你发现这个me拍西igma都去不再发生变化了,就不要停理它就是了。没错,有朋友看到这个是的很重要了,是不是?😊,所以我就说这一页是咱这今天这次课的最重要的一页。对的,就是除以他就是个了做规划用的。

呃,为何想到这个中转式的其他什么思想呢?其实不是这样想到的,而是通过后面我们正式的去把它推导出来的。只不过为了让大家。觉得它方便,我先倒着讲的,我先把结论抛出来,然后得到这个式子。

大家觉得这样舒方便一点。等会儿我们从严格的来去看一下到底是怎么做的。呃,编程量不大,这个编程量我正好是恰好我把这个实现了,这是很简单的代码,咱就等大家看就好了,编程量很小的。如果能够求这个就是群自由了。

注意这项事是不对的。这条不对哈,就是说呃。😊,自然函数只有在它是呃指数族分布。只有在指数族分布的情况之下,它是有一个全局的极值点的那种情况之下,它是能够得到全局最优的。你比方说高次分布。

你比方说是高那个坡速分布这种东东这都是没问题的。包括指数分布,它都是指数分布,它都是指数足这么一个分布的。但是。高斯混合模型就不是了。它是有多个极值点的。所以说即使你通过原始式子做。

仍然是没有无法得到裙子有的,搞不定它哈,其实。啊,对,如果你能证明它是凸的那肯定是那没问题。🤧嗯。数据量大的话,可以mamve use吗?就是说这样哈,就是说如果这样一个题目的话。

用mber reduce的话,就有点这个杀鸡用牛刀的感觉了。因为用mber reduce它的。特点不是说呃咱想让他快,他这的marit并不快,他只是能够去把它得出一个结论来,对吧?

那我可能20分钟他出个结论,但是我能保证它能做出来,对吧?这是marry由此干的事干的活。但这里面事量大的话,根本没必要上这个md丢,没必要上hadop,对吧?呃,跟他是相对独立的哈。好了哈。

那这样子我们把这个目光放回来嗯。😊,如果这QQ分布不全是高速分布,能这样求吗?不能。如果这K个分布不是混合高斯模型,比如说咱呃哦就是说如果是公开课,可能就不会讲了哈。如果是PRSA。或者是HMM。

就是不管是主机模型,还是这个伊马克模型。它那个里面不是它的先艳分布,不是高斯分布,那嗯那就没戏了,那就不是这个结论了,那就别的结论了,但是不妨碍用EM算法可以解决。

人工智能—机器学习公开课(七月在线出品) - P9:机器学习模型发展脉络——以感知机模型为例 - 七月在线-julyedu - BV1W5411n7fg

,呃,可能有些同学是第一次。参加我们的这种公开课的活动啊,当然也有可能很多同学都已经看了很多次了。啊,我先做一下自我介绍啊,我叫陈亮啊,来自我们这个北京区在线。呃,负责现在EI level的工作。

按照计划安排。今天晚上和大家一起去分享一下。在我们整个的机器学习的过程当中。的一些需要注意的地方。为什么要组织今天的这次公开课?是因为我们在往期的。呃,课程当中。非常多的同学碰到了这样那样的一些问题。

究其原因可能大体上有这么几点。一方面,这些同学都非常刻苦努力的去学习了很多的模型算法。但是很遗憾的是。有的时候会发现,确实是只见树木,不见森林。什么意思呢?就是我们阅读了大量的文章资料,呃。

实实践了很多的代码项目。但是有的时候你会问这些同学,我们到底要什么?或者说我们到底要达到一个什么样的目的或者目标,可能不是特别的明确,有的时候有些同学一起讨论的时候,也会有。

这样的困惑就在于啊我们学了这么多东西,到底目标是什么?或者说我们要往哪个方向继续去走。啊,这是一个需要特别希望和同学们能够有一个沟通和交流的地方,这是第一点。那么第二点呢,就是在学习的过程当中。呃。

很多的同学没有章法,就是没有一个。思路和一个脉络,学习的过程非常的随意,或者说是。呃,跳跃今天啊对这个感兴趣看两天啊,明天对那个模型呃比较着迷啊,又学习几天。那么学了很多的内容,在讨论的时候。

说这些相关的内容,彼此之间的联系发展。又是怎么样的?那么为今后的学习有没有一些指导和帮助性的东西和内容,可能又是比较模糊的地方。那么这是第二点。第三点呢就是在具体的模型和学习算法的学习过程当中。

有的时候可能。对一些具体的。公示。呃,代码可能有一定的认识和掌握。但是当这两者之间需要统一进行描述的时候,又带来了一些问题。换句话说,公式的原理部分以及代码的实现部分,两者在内在逻辑上是完全统一的。

那么当然中间我们会在课程里面会借助,比如说像图示的这种工具来帮助大家把这两者进行一个完整的统一。不能划水啊,特别是读公式的时候,呃,有些有些同学不太在意,对吧?啊,大体上我原理了解了呃一。

一到了实现代码的部分当中,会发现呀。这个量是个标量还是个向量,对吧?如果是个向量,是个几维的向量,如果是个矩阵,是个。维度为几的矩阵是个几乘以几乘以几的矩阵呀,这样有有有些模糊,这个就不得不返回头去。

在原理部分重新再过一遍,造成了时间上的这种损失。所以基于以上三点啊,那么今天也就从这三个方向上和大家有一个交流。首先呢就是第一点。就是我们的目标。

或者说我们的呃最终达到这个目标要完成一些工作到底都有哪些?第二点呢就是我们在整个的模型和算法的学习过程当中,模型和模型之间的依赖关系,或者说是发展的内在逻辑到底是怎么样的。我们怎么样才能构建自己的啊。

基于你自己的实际情况,去构建你自己的知识体系和模型体系。然后在今后的学习和工作过程当中,不断的完善补充,加强你自己的知识体系啊,这样的话才能形成一个。有脉络的啊知识框架啊,指导你今后的学习和工作。

那么第三部分呢,今天我们用一个简单的啊感知机模型啊来介绍一下,一呢看一下感知机模型的这种脉络发展啊,它是怎么样从线性回归啊,发展得到感知机模型。然后又从感知机模型的基础上,怎么样改造,我们可以延伸出。

比如说像非常重要的支持向量机模型。啊,就是发展脉路是怎么样的。另外呢在具体的这个感知机模型的学习过程当中,就像刚才我们所分析的啊具体的一些实现的细节部分啊,怎么样去理解它,借助一些更好的一些图形和公式。

怎么样才能更好的去把握啊,这些内容呢。是希望今天啊和大家有一个学习和交流的部分。当然啊呃这些内容呢在我们继续营和就业班的课程当中啊,都会或多或少的进行穿插和介绍。呃,今天呢单独把它摘出来啊。

拿出来和大家有一个交流。呃,首先我们从第一部分开始啊,就是我们的目标,或者说我们的。学习完这课程以后。到底要在哪些方面上有些积累啊和学习。那么呃现在看一下这个视频应该没有问题吧,看看。

OK声音和视频应该没问题,是吗?那如果没有问题的话,我们就继续好吧,OK。那么简单的总结了一下啊,那么至少在我们进行这个学习的过程当中,有这么三点是我们特别希望嗯大家能够注意的。

一方面就是理论基础部分啊,第二方面呢就是编程实践部分。第三方面呢就是工程项目部分。这三个方向呢也是我们在急训营当中啊,就是通过这种螺旋式的设计,不断的进行迭代和完善的。比如说一开始的阶段当中。

我们更多的是关注到理论理论基础。然后呢,在此基础之上,我们会有相应的编程实践的内容啊。最后我们再通过一个完整的项目,当然是分方向,有CA方向NLP方向推荐方向来完成整个的一个螺旋式的上升。呃。

这是三部分主要内容。那么在这三部分主要内容当中哈,就是也是哈就是为什么聚焦到这三部分,也是通过我们往期的学员啊反馈回来的一些,不管是面试也好,还是工作过程当中的一些内容,我们进行一个总结的部分啊。

就说面试的时候,面试官往往先从理论基础开始是吧?都问一下你掌握了哪些模型是吧?这些模型的基础原理是什么样的呃,更进一步的,比如说像SCMchgebo的啊,这种基础模型首推一下基本算法原理部分,对吧?

像深度学习模型部分,包括你像基本的RN对吧?LSTM像这种模型,现在比较。关注更多的像attiontransformerport这种这种这种基础模型。它的一个基本的架构啊,这都是在理论基础部分。

经常会问到的内容。那么编程部呢。那么相应的这些模型有没有相应的实现的方式和手段,对吧?换句话说,现在开玩笑就是调包调参,那即使是调包调餐,你也得会调会调才可以。那么相应的一些包。

你是不是掌握了相应的一些API你是不是掌握了?面对实际的问题能不能调用相调对了包,参数有没有调对了啊,这都是我们在编程实践部分需要解决的问题。那么第三部分可能也是我认为比较重要的部分,就是工程项目部分。

那在这部分当中哈,我们的课程里面呃。也构建了项目库。在整个的我们的教室老师啊,会拿着其中的一个完整的项目进行一个完整的介绍。当然啊不可避免的是有很多同学确实学习能力很强啊,这也没关系。

我们的项目库里面有相对比较丰富完整啊的项目准备啊,从技术先进性上来看的话,我们也是紧跟着技术的发展方向你比如说像CA方向呃,像优oV4啊,优OV3啊,这都是我们有完整的啊项目介绍。

完整的项目代码项目注释啊,我有我们的助教老师能够呃完整的能够把这个项目能够。带下来啊,所以在这部分也是希望至少在找工作之前,你手头上怎么样有2到3个这样完整的项目才是可以的。呃,其实再说衍伸一点。

一会说一下,就是项目怎么去做,其实是有方法论的啊,这个有时间的话也和大家有一个讨论和展开。那么以上三点呢,我们就再相对展开看一下,好吧,比如说哈在理论基础部分啊,分了这么几个部分。比如说像数学基础啊。

这是经常会有同学问到的。大,有一些模型和算法的推理过程是吧?大量的使用到了一些数学工具,数学方法,那我们有没有必要去单独的去补充一下,嗯,这个看实际情况啊,看实际情况。

比如说哈比如说我们经常会用到的一些数学工具,包括你像数理逻辑微积分线性代数概率论统计啊,呃信息论和最优化。当然可能还包括其他的一些啊就大块都在这个地方啊,大块都在这个地方。

那么数理逻辑部分啊可能很少提到过,为什么要强调这一点呢?还是刚才所说的,我们后面的不管是机器学习模型也好,还是深度学习模型也好,有些的部分的原理推导,还是嗯不能说难啊,就是从它。就是难易程度上其实还好。

可能稍微有一些冗长啊,也不能说冗长吧。就是可能比起我们之前所学接触的一些推理过程,稍微有一些复杂。那这个时候往往会陷入到一些技术细节当中啊,你推一段啊可能十几步啊。

那这十几步咱们推推推完了以后发现ok哎,推完了,但是有一个问题在于我我推完这个结果,它的目的和作用到底是什么?这个时候可能你需要有一个框架性的东西,比如说因为我们输入的是A,对吧?然后呢我需要。

推出C而在推C的过程当中呢,我免不了会使用到B。所以这个时候我需要把B能够完整的推出来。然后有了B,它作为A的一个已知条件,就能推出了C。所以说而这一部分我们可以通过啊完整的一个逻辑描述,对吧?

我知道什么要求什么,中间需要什么从此啊不至于跑偏了啊,这是我认为啊是在学习过程当中一个比较重要的一个技巧之一啊,有的时候特别是像后面你像HMM模型CRF模型啊,这种就是。

概率部分大量的使用到了一些什么加号规则乘积规则是吧?而且是在条件概率之下的各种各样的公式的展开使用。啊,有的时候会会逻辑上就是会显得有些繁复啊,但是这个时候你一定要清楚你到底在干什么啊。

这是关于数理逻辑部分,微积分部分可能更多的使用的是微分啊,积分部分相对少一些。为什么这么说呢?微分部分主要是和后面的最优化可能结合的比较密切。

就是我们往往会把整个的呃学习模型的问题转化成一个托二次规划问题啊,这样的话我们就可以把它解出来啊,从通过迭代的方式把它解出来。而在这个求解的过程当中,我们用的数值方法,可能更多的就是一些。

基于迭代的梯度收敛的一些方法。而这些方法当中就不可避免的会使用到一些微积分的知识啊,但是呢也不是特别的复杂啊,这一部分其实我觉得具有啊大学本科的数学基础基本上也就基本上没问题了啊。

如果说呃希望能够啊有时间啊,能够再回顾一遍的话,其实给大家推荐就是普林斯顿大学的有一套就是微积分啊,那本书还是相对我觉得个人感觉啊还是不错的。这是微积分部分呃,线性代授部分呃,其实是个重点内容啊。

比起前面的微积分部分,为什么这么说呢?呃就基于两点一原因吧。第一点原因呢就是线性代数部分会因为我们后面的这个学习模型啊呃。都是在高位空间里面进行所谓的不管是呃曲面拟合也好啊。

还是等等各种各样的计算也好啊,都是在高位空间里面。这就不得不从我们的标量计算啊,衍生成所谓的向量计算。啊,或换换个角度你将在深度学型模型部分随着模型的越来越复杂啊,我们不得不啊使用这种向量化的手段。

把我们呃之前非常细节的啊,非常呃清楚的或者非常嗯一清二楚的那种标量公式转化成相对比较呃隐含着那种标量化的表示形式啊,甚至后面我们会大量的使用各种各样的矩阵计算。啊这个时候线性代数里面啊。

各种各样的符号表示啊,各种各样的基于向量的基于矩阵的计算就起到了非常非常重要的作用。所以这是第一部分。就是关于线性代数的就是从标量化表示形式,向向量化表示形式的这种过程,就是转变过程啊。

是线性代数里面需要掌握的内容。另外一点呢,刚才也讲到了,就是基于呃向量矩阵啊,这种复杂结构的大型运算,可能在线性代数里面也都讲的比较清楚。像比如说另外一个就是空间的概念,对吧?

我们后面会讲到输入空间、输出空间、函数空间啊等等。还是比如说我们有个合技桥以后,我们通过核函数,对吧?我们向其他空间进行映射,那这些内容可能在线性代数里面都有集中的讨论,所以线性代数部分啊。

其实是建议大家能够拿出一定的时间啊,能够呃相对比较系统的啊,能够回顾一下,这是关于现在。概论部分啊也是非常非常重要的部分。关于概论和统计部分啊,概论部分呢可能更多的就是各种各样的概率分布啊。

这个你像二项分布啊,BS这个呃高斯分布啊,对吧?等等各种各样的分布都是在概论里面,你需要掌握的比较清楚啊,比如说一些统计方法极大自然。这种统计手段。在概率概论和统计里面。都有完整的讨论。呃。

这两个方向呢,可能我觉得。呃,满足一般的这种考研的要求也差不多的一个水平啊,当然啊也不仅限于此这些内容啊,其实我个人觉得就用到的时候拿过来看一下啊,相相对来补充一下也是可以的啊,用到什么看一下。

当然如果你时间充裕啊,我知道很多的同学都是在校生是吧?如果你时间非常充裕,那我还是建议你有有时间就看一遍。当然时间紧张,那用到的时候我们再展开学习就可以了。信息链呢就是为我们提供一些帮助。比如说商啊。

比如说像信息增益啊,这些概念是我们在后面一些模型过程当中会使用到的一些工具啊,用作的时候我们。拿过来用也就可以了。所以信息论部分其实并不太建议拿出完整的时间去一块去学一下。呃。

另外一个部分呢就是最优化部分啊,这一部分呢其实还是比较重要的。因为我们后面的机器学习模型,特别深度学习模型部分最终转化的目标就是一个最优化问题啊,我们通过各种各样的迭代手段把它求出来,求解出来啊。

呃还是那样,如果有时间的话,其实这部分是可以好好的去看一下的OK啊,这是关于这个数学基础部分啊,简单的和大家有一个这么一个交流。那么下面那个部分呢,就是关于这个。机器学习部分的模型和算法。呃。

现在来看哈,就是传统的机器学习模型和以神经网络为代表的啊深的学习模型是现在嗯两就是2块吧,就是在面试和工作过程当中,经常会被考察到的内容啊,像今天我也在面试啊,就是我我们我们公司和部门一一直类的招聘啊。

我面试这个新同事的时候,我就说积器学习。部分的模型啊,哪个掌握的比较好一些啊,我们可以聊一下是吧?呃,你可以比如伊马可夫是吧?你比如说像毕亚斯也可以是吧?你比如深度学习部分的模型啊。

哪一个你掌握的比较熟练一下,我们可以聊一下,对吧?但基本上会分这么两大部分,那么在机器学习模型里面的模型内容啊,今天就不展开讨论了,呃不少啊,比较多,这就是会引出哈,第二个今天的第二个问题。

就是这么多的一些模型,你怎么去学就先学谁后学谁的问题,有的时候啊有的同学就是要扎猛子一样,一蒙一蒙的是吧?今天哎今天看这个眼熟,哎,看两天这个哎,明天确实这个挺好,我搞两天这个他俩之间有没有关系啊。

什么关系啊,然后今后的发展又是怎么样的。呃,不是特别清楚,这其实是需要有一个逻辑框架在里面啊,一会儿啊我们重点把这一部分和大家有一个介绍,啊,呃现在罗列出来的这些模型啊,仅仅是呃其中的。一部分啊。

甚至说是非常有限的一部分啊,但是这些部分呢涵盖了我们刚才所说刚才说到的一些主要的发展脉路。比如说像线性回归模型是吧?广义信回归像这持向量机啊,像这种模型,我们都是重点需要介绍的啊。你比如说像数模型。

决对数模型是吧,决得数模型和提升方法进行结合,就可以引出所谓的什么就查gebo啊,现在非常重要的一个工作。以贝列斯方法为主的概率模型是吧?

贝列斯方法后面和像伊马可夫像条件数机厂这种模型的这种关联程度非常非常大。那其中你像EM这种就是呃调这是个。期望最大方呃方法可以为我们让HMM这种模型的这种计算提供一些帮助。

那他们之间是有千丝万缕的关系的而。彼此之间不是分裂的那这样的话这种线头啊,你需要把它摘出来啊,一会儿我们重点的把这个梳理一下。那么下一个部分呢,就是深度学习部分啊呃这也是啊就是。

最近一波人工智能所带来的一个突出的贡献,也就是以深度学习模型为代表的啊,在各个应用方向上取得的很好的工作啊,但是这些工作呢我们也是从基础的部分开始。比如说像CNRNGN啊,这些基础模型呃。

为什么没有这个前柜神经网络啊,因为前柜神经网络放到了这个机器学习模型里面去了啊,但是这个地方说明一下,你像这种前柜神经网络,它的反应传播啊算法啊,这个让你首推一下,其实并不过分啊,好吧。

而且呢这个推导过程当中,你到底是标量表示形式还是向量表示形式啊,这都大家都可以,但问题是你如果落实到代码上让你手写一个神经网络,对吧?钱柜的。你能不能完整的手写出来,而在写的过程当中,你才会体会得到。

比如像后边的n派这种东西是吧?这种这种这种数据结构,为我们这种向量化的这种呃。编程带来很大的帮助是吧?那么。在基础的视经网络当中,比如说像CN啊CNN的各种各样各样各种各样的改进。比如说它的。呃。

比如它的呃future map是吧,它的特征图,它的池化层,它的各种各样的呃这种呃t是吧?各种各样的技巧,你怎么去应用到你的这个这个结构当中去是吧?这都是在卷积神经网络里面循环神经网络呢。

如果说卷积神经网络在像CV方向取得了很多的工作的话,那么现在在NLP方向上,对吧?取得非常非常大的工作和好的工作,你像这种R基础的RN像LSTM是吧?

JRU然后呢以后后面的比如像比如说像attenition机制以后的transformert模型也是非常的工作,非常好的工作。但是它的基础都是这些基础的模型结构啊。

你会发现呃以此形成了一种就是散射性的结构。就是你了解了一点以后,马上带出来的是一个非常广阔的空间。就像什么?就像我知道大家。应该都都都比较喜欢玩玩网络游戏是吧,或者电竞啊。

那时候都有一些技能术的概念是吧?你就会像啊当你学了一个新的模型,一定就像点开一个新的技能树一样啊,一定要把它发散出去。哎,我知道哎当前这个技能啊,它的它是从哪儿来的,是吧?然后它是干什么用的。

它今后的发展是什么?你别乱点技能点,最后点一点。点了不少,最后形成不个形成不了核核心竞争力,我觉得还是很遗憾的是吧?所以说这个技争术怎么点,你一定有有一些方法啊。

比如说JN对抗生成也是非常啊非常好的一个方向。这是技术模型啊,但是基础模型的基础上,我们就会分方向啊,在我们项目阶段也是这样来做的。比如说CVNLP推荐啊,是我们三个现在主要的方向,当然也包括金融啊。

比如说像在CA方向啊,今天就不展开了,就是这部分我们会啊以每一个方向啊为代表啊,会绘制一个发展脉络图,就是以不同的功能,对吧?嗯,你是做分类,对吧?你还是做检测,还是做识别。

还是做各种各样的这个场景的这个分割啊,都是有不同的应用领域,那么这个每一个应用领域的发展,都是从简单向复杂啊,从基础向高级,对吧?是因为事物的发展本身就是这样的嘛,对吧?那螺旋是这个上升波浪式前进是吧?

都是这样的发展。那么在每一个模型过程当中,你应该非常清楚的知道OK。当前的模型是在原模型的什么样的问题的基础上进行了改进,进化得到的当前模型。那么当前模型的问题又是什么?那么基于当前模型的问题。

我们可以做或者可能做那些改进,是不是会得到一些更好的方法,啊,我知道很多的同学都是做都是研究生在读是吧?那时候有的时候啊这个写些写论文很头疼是吧?其实你你你就是套路,你掌握了啊。

我觉得水几篇论文还是问题不是特别大是吧?那么那怎么样去去写,其实逻辑关系不就是这样嘛,对吧?你掌握了越多越多的基础材料啊,一定会分析出这些材料的或者这些模型的问题在哪,或者可能的问题在哪。

针对这些可能的问题,找找有没有试着解决的方法。那不就是如果这个方法可以做出一个相对还不错的结果,这不就是一篇论文嘛,对吧?特别是后面我们讲到了,你把一些。毕斯的一些观点啊,应用到现在的工作当中。

我觉得都还是一些很好的一些方向。这是CV。啊,比如说像NRP是吧?我们有很多的一些模型,现在啊以bt模型。对因为这个材料比较老了啊,就这个材料是呃之前准备的。然后呢。

现在可能要重新或者大范围的进行调整啊,又不以以bt为例啊,我们又又扩充出很多的一些新的模型。那这个时候啊那这个时候。你会发现这些新的模型又是在b的基础上,比如说现在bt的参数比较大是吧?

我做是不是可以做压缩是吧?我是不是可以做蒸馏,在体积上压缩它啊,性能上损失不是那那么大,这就是个很好的方向嘛。比如说它在特定任务上,我怎么样可以基于我当前的业务问题进行进一步的深化改改进。

这都是很好的方向。所以。基于此吧啊就是深度学习模型部分,也是我们现在非常重要的内容之一啊非常重要的内容之一。那么呢往往呢我们会忽略最终和忽忽略下面一点,就是关于分布式机器学习的部分。为什么这么说呢?

就是往往我们把这部分的内容呢放到了实践部分当中去,就是关于呃模型的分布式计算的问题。呃,这个问题上,其实给大家报告一下,在大概56年以前啊,当年我们在呃当当年我在国家电网去带队伍去做这些工作的时候。

其实当时面临着一个核心的矛盾,就在于复杂算法的计算性能的问题。就是当时其实就在想这么复杂的模型,它一定是呃计算很复杂的啊,在单机下面。呃,当当时。GPU的计算能力其实还是非常有限。

当时我们就想是不是可以多GPU计算啊,多GPU的分布式计算。呃,其实里面还有很多的这个技巧和内容,比如说像模型并行啊,数据并行啊,还是呃嗯其他的一些流水流水线并行啊。

这些部分呢其实为后面的或者后续的工作其实还是有一定的指导性的帮助的啊,当然有了像fl和这种这这种高级的框架以后,他会封装一些并行算法是吧?当然这很好,但是具体的一些呃实现那些逻辑原理。

还是希望能够呃有一定的掌握啊,有一定的掌握。你像最近啊这个老实目啊,袁老师啊,他们公司呃新放出来那个one follow啊那个框架其实就是有非常大量的技巧啊在里面。

那这个时候你会发现O他为什么在性能上取得了这么好的成绩。就是因为在这种分布式计算的这种各种各个级别上啊,都做了大量的优化那当然这个时候。也为啊今后你在呃使用像terflow排这种框架的时候。

有一定的指导性的工作用啊,这是关于理论部分啊,再重复一遍数学基础,根据个人情况啊,查漏补缺,有针对性的查漏补缺。那么机器学习模型和深度学习模型,这都是呃跑不开的问题啊呃积极学习模型能掌握多少。

掌握多少啊,深度学习模型掌握越多,当然帮助越大。当然你不是说呃。毕竟人的精力也有限是吧?我你最好是找找准一个方向。比如说我是做CV是吧?嗯,我我沿着CV这条路啊,我在里面去细分啊,我是做目标检测。

还是做这个人脸识别啊,等等还有当然还有很多的细分方向,对吧?我是做NLRP那当然我是做知识图谱,我还是做这个。呃,翻译我还是做问答,对吧?这都是很好的一些方向呃,找准方向。当然现在有一个趋势哈。

特别是庭审机制出来以后,以前的特征图理呃。大家一致比较一致的认认为是啊就是以今后的特征处理都会迁移到像在特产机制当中去啊以。这也是一个方向吧。当然不管怎么样啊,这些内容啊还是还是一个基础性的内容。

当然理论基础归理论基础。那么有了这些理论基础以后,我们不得不把它能够run出来啊,那这个时候就牵扯到另外一个问题,就是关于我们的编程部分就是编程实践部分。

刚才其实也介绍到了啊所有的编程实部分其实就是调包调餐啊,当然简单点说啊,是这么这么说啊,当然也不是特别准确。但是不管怎么样啊,刚才所说的那些基础性的模型,你都得找对了啊,找正确的方式它能够run出来啊。

能够让出来,这是基本的一个要求那么一些典型的包啊,比如像是吧,bo啊,像这个MLTK啊,包括啊,以及刚才说的像在分布式环境下,在啊,这都是非常好的可供我们使用的啊各个方向的这个机器学习的包。啊。

这些包里面嗯。有重点的啊,我们都会在课程相关的课程当中啊进行一个介绍啊,在这个地方呢多说一点,就是关于这个数据可视化部分啊,这个部分呢可能往往不被很多的同学所重视。但是这地方强调一点啊。

嗯这和后面的工程项目有相关了。为什么这么说呢?工程项目的目标是为了解决我们的业务问题。我再重复一遍啊,工程项目的目标是为了解决一个业务问题。而这个业务问题的解决啊。

是一定需要向业务专家进行沟通交流汇报的啊,不是你自己拍脑门想当然的认为怎么样,他就怎么样的。所以这个时候就免不了需要向。其他领域的专家进行沟通。那这个时候怎么沟通,也是有非常多的技巧。

特别是我们会在方法论里面进行一个一个讨论。那么其中一部分就是关于可视化。就是你的结果一定是通过可视化的手段向其他专家进行展示啊,这是一个呃非常重要的环节,而往往是我们有倾射的一个环节啊,这是不应该的啊。

这是不应该的啊,所以以上吧,那当然python啊呃这个地方我就不强调了,为什么这么说呢?在现在这个时间点上啊,在现在这个时间点上如果你不是之前学过R,不是之前学过matlab啊。

那你就不要做过多的疑惑和选择了啊,python是你现在首要的语言啊,如果你之前比如说像学统计的同学是吧?学这个学数学的同学可能掌握的R和lab比较多一些啊这个时候呢。

其实我也个人建议你啊重新把python能够学起来。啊,从现在这个时间点上去看的话,python基本上已成为这个方向的首选语言。当然呃是加引号的啊,很多同学会有不同的意见。当然我要保留我各自的认识,好吧。

能简单点说哈,就是python是现在的首选语言啊,其他语言可以,但是现在来看啊不再建议去新的啊去学R去学个新的mat lab。如果你之前没有基础的话,好吧,这是编程试检部分。

那么第三部分呢就是关于工程项目部分啊,这部分呢其实还是那样你不干过一个两个完整的这种工程项目,其实你的体会不是那么的深,但是呢这也不得不妨碍啊,在我们的课程当中啊这部分内容和大家做一个介绍和沟通啊。

是大家有一个认识,到是项目这是怎么做啊,这里边关系到哪些人啊,甲方乙方对吧?你都有哪些角色啊,怎么可能沟通交流啊,啊,还是有一定帮助的。好了,综上吧,那么今天啊第一部分内容呢,就是和大家聊一下。

就是关于机极学习方向也好,还是数据科学方向也好啊,以上三部分作为我们今后学习的一个目标啊,你要知道你现在在哪儿啊,你的基础水平比如说刚才你的数学底子好不好,对吧?你的这个呃理论基础怎么样啊。

这都是你自己最清楚的,你的编程能力达到一个什么程度了。然后你要知道你往哪儿去,就是我们的目标,反正就是目标就摆在这儿是吧?理论部分就刚才所说的那些内容都必须要掌握啊,编程代码部分这些包容你都会调。

你就会调啊,参数你就会调啊,工程项目你会完整的一个一个把项目做出来啊,当然这个工程项目部分我们都有啊专业的老师啊,带着大家一步一步的去完成。但是不管怎么样,你知道了你在哪儿,你要到哪中间的过程啊。

就是我们的课程过程。当然也也包括啊大家的各自的努力。好吧,这是今天我们第一部分看看有什么问题嘛,我们一块交流一下。

啊,今天啊是这样,就是。在准备直播之前啊,主ly啊,就是我们这个CEO啊给我一个消息,说是在课程当中啊,如果我们有这种就是呃交流互动的同学啊,可以去我们的那个呃应该是课程群里嘛,去领一个免费的课程。

当然具体课程可能需要大家选一下。但是我有这么一个福利还是挺好的。然后呢我看看就这一部分和大家有一个交流吧,有什么问题我们可以沟通一下。直接在直播间里提问就可以。好,这是个好问题啊,就是有同学问。

强化学习的这个地位啊呃我在呃可能是有同学呃。刚才看到了在那个我那个目标里面,强化学习部分其实并没有体现的出来,是这样。但是呢强化学习部分嗯也是非常重要的一个内容。呃,但是实事求是的讲。

它并不像呃你像CAB方向啊,但是嗯。NLRP方向这些应用场景非常明确的方向的使用那么的突出,但是也不妨碍它在一些特定领域当中起到了非常好的一些作用。呃,我们只是没有把它单独的拿出来进行介绍啊。

但是它应用场景还是非常非常不错的啊,可以作为我们的基础模型一部分,但是我们呃课程当中讨论的相对少一些。呃,本科学历进大厂好难嗯。呃,难易程度我觉得是个相对概念。我觉得它和学历是相关的。

但不是一个因果关系。我觉得决定因素可能更多的还是你的呃技术掌握程度是吧?换句话说,如果你能力达到了呃,本科、研究生呃,其实。

呃,有关系,但是我觉得关系不是那么大。如果是能力达不到,我觉得即使你是博士研究生,我觉得也也肯定。嗯。进不去,对吗?估计积极学习的就业多久会饱和,是这样啊,这是个好问题。就是我说一下。

就是积极学习这个方向的问题是吗?我给我我至少我个人有一个观点啊,现在我们已经进入到了一个叫做。就是嗯每一个学科哈都会经历的一个叫就是范式改变的过程。什么叫范式改变?就是研究方法和。

研究的呃技术更新的一个阶段。比如说举个例子啊,我们经常会有一个认识,你比如说像经济学,对吧?以前我们可以可能会认为这这种学科是一个像心理学。你像这种学科可能都是就是文科生考的比较多一些,是吧?

但是给大家报告一下,现在的经济学已经完全不是文科生的搞得定的学科,甚至有一个玩笑,就是现在的经济学家叫做计量经济学家完全都是使用这种定量的技术,去分析经济现象,总结经济规律,指导经济的发展。呃。

从这个角度上去看的话,呃,你会发现。定量的手段和定量方法。其实你可以认为就是使用机器学习的技术去解决他们的业务问题。给大家再举个例子,比如说像生物学。啊,现在的生物学呃研究研究又变成了信息生物学啊。

这个他们说啊现在不懂python语言,生物都干不下去了,是这样啊,大量的这种生物数据呃,必须要用这种啊技术手段去解决他们的业务问题。你像天文学以前的天文学可能你给我个望远镜,这个活我就能干了是吧?

大不了我做一些艰苦的记录,现在已经不是这样了。我们现在的电子望远镜返回来的数字信号都是使用python这种技术手段,当然不一定是pyython语言哈,就是像这种数据处理技能去加以处理。

然后以图像或者或者说是呃表格的这种形式展示出来,我们才能发现一些问题。所以说呃就从我个人的这个视角和观点上认为这个方向的饱和。如果是有饱和的那天的话,可能比如说像你像量子计算。

这种通用的量子计算能力达到了一定的这种发展,可能就不需要我们在人工的去做这。给工作的时候,我觉着okK我们也被替代了是吧?所以我觉得这个方向还会继续走下去。下面如果要做无人驾驶方向的话。

是不是基本确定主要是C一方向,还是要其他的选择呢?呃,是这样,首先给大家报告一下无人驾驶方向我不是特别的熟。呃,当然从现有的资料上看的话,一部分是CV方向。其实我了解的情况,比如说像雷达的数据呃。

像这种嗯对各种各样的波长的雷达数据,可能也是作为我们的这个就是在无人驾驶方向的处理数据之一啊,这是一部分就是从感知层面上,那么另外一部分呢可能就是从控制层面上,对吧?

我我看我识别出来这个结果以后怎么控制我当前的驾驶方式可能也是非常重要的一部分理论,所以呃CV是很重要。在无人驾驶方向上,但是我觉得呃还有其他的方向,就是在这个领域里面。呃,O。量化方向的就业嘛。呃。

我不知道这个量化具体是不是指的就是金融量化方向啊,这是一个确实是很好的方向,特别的吸引人。但是呢嗯。做吧,我觉得实际是个好方向,但是但是看你怎么去去去做现在的量化和AI的结构有很多的方向。

比如说去做预测是吧?但是这这我个人不看好的方向,比如说做呃。呃,研报的自然语言处理,我觉得这倒是一个不错的方向。因为知道我们现我们现在也在和像金融专家去聊,他们的研报的这种阅读和理解。

大量都是从人来去做量很大啊,这个重复劳动很多。啊这个时候我们是不是可以通过NRP的方式呃,去自动的去加以处理。我觉得是非常好的一个方向啊。当然你说我通过呃AI和量化结合,马上去赚钱。

我觉得我觉得不要抱着这种目的啊,你觉得你抱着一种去提高生产力的目的。我觉得这个是可以做的一个很好的方向。我们实验室是做故障诊断的,现在就是信号处理加一些算法,因为需要做模式识别。

你像SVM现在做模式识别用的还多吗?O呃,我不知道是哪个方向的故障诊断哈,呃,之前呢我是在国家电网做过设备测的呃故障诊断啊,当然可能我不太清楚啊,因为大我我不知道你的背景知识。

在那个时候其实我们也是接入了当前设备的一些运行状态数据啊,当然我理解可能就是信号数据去分析当前的运行状态。然后为预测性设备的维护,对吧?做一些前期的呃故障预警或者说是呃预测的一个工作啊。

大约是5年以前了,我们还是在用SVM呃做这方面的工作,想想吧,我觉得现在已经不是那个阶段了,对吗?嗯,从我个人的理解,SVM已经hold不住了。不管是你做论文也好,还是要做实际的呃产品也好,我觉。

这都不是一个现在首选的。模型了。当然呃我们在课程当中都会讲到SVM。那么现在的SVM的这个地位变成了什么呢?如果说在56年以前,它处的还是一个。主要模型的地位的话,现在的你像SVM这种模型啊。

已经慢慢的退化成了所谓的基线模型。就是我上来先不用深度学习,对吧?我先用SVM这种经典的模型,要跑一遍数据打一个基线啊,呃调调参啊,也就是说后面我的深度学习的模型,性能再差,至少你不能比SVM还要差。

明白什么意思了吧?就是说后面一定要。各种各样的啊模型啊,算法往上怼,你怼的结果,你总要有一个比较是吧?除了模型和自己比较之外,你先和SIM比比啊。如果你比SM还差,那这个肯定不是个好好的一个模型啊。

基本上是这么一个一个阶段吧。呃,无人控制对无人驾驶的话,控制部分还是强化学习为主。但是我觉着还是会有一些更好的一些手段和方法。啊,同学刚才说交易因子是吧?因子挖掘是一个我不知道你是做阿尔法还是做贝塔呃。

这个呃多因子挖掘,现在是一个很好的一个手段和方式。但是你得看你能不能拿得到啊,举一个例子啊,当然我我们之前没有做交易,我们做这种你像就是天气的延伸器预报啊,降水的延伸期预报。

当时我们也觉得影响降水的因素有很多啊,包括你像节假日的因素,你像这种就是人工呃运动的因素。那这个时候我们之前的模型啊,你像之前的这种降水预测模型可能相对考虑的少一些。

那我们可以通过这种呃神经网络就是深度学习,无非就是就是特征提取嘛,就端到端的特征提取,对吧?呃,你对我来说,我我也不知道你这个因子到底有没有价值,那扔到模型里面去看结果呗,对吧?做一些数据,对吧?

看一下结果,那这样的话,如果在当前的呃业务领域里面有作用。那我当然就ok了。呃,如果没作用。那也无妨嘛,对吧?故障诊断呃,还是那样,因为。故障诊断这个概念其实就是这个同学的问题啊。

是哪些算法可以做故障诊断,对吧?其实你你得是这样,就是我理解故障诊断是一个业务问题。你现在需要做的是把这个业务问题映射成一个模型问题,然后才能选择合适的模型去解决它。

你比如说你可以把一个业务问题抽象成一个分类,对吧?你这个故障,比如说我专家经验告诉我,我的故障就5种,那我后面的模型就可以用分类分类模型。对吧你无非就五种类比行吗?我就一种一种对应一类分类不就可以了嘛。

如果你业务专家告诉你,我没有特殊的这个故障类型指标啊,只有它运行的一个运行的一个数值,那我只能做做回归。回归完成以后,一定要找业务专家,让他去看一下当前的这个。

这个这个拟合的这种曲线或者拟合的这个规律能不能反映出故障问题。所以说还是啊我觉得现在呃大家问的这些问题啊很好都很好。我知道我能理解大家的困惑到底在哪。这些问题啊,一定是像刚才我们所所说的,在项目阶段啊。

就是就是那个方法论的问题,你得知道你是谁,对吧?你得知道这个事儿谁说了算,你得知道你这个工作的结果,你得找谁去认可,而不是说哎呀我这个模型怎么样。其实有的时候你会发现,即使啊给大家说一下。

即使我用回归啊,我用线性回归去做一个工作。啊,肯定不会像神经网络,不会像深度学习这么高大上,对吧?但是你这个工作如果做的技巧足够好的话,我觉得你。不妨也可能会达到像。深度学习这种这种这种效果啊。

当然这个时候可能就不纯粹是一个技术活了。好吧。O。啊,贝尔斯统计是吗?OK啊一会儿我会介绍到哈,就是贝尔斯统计呢好像不是那么的就是研究多,但是这确实是一个好方向啊,就是因为其他方向研究的太多了。

那就不是个好方向了,能明白这中的逻辑吗?就是说就大家都往那一个方向去去去去扎堆,那不就成了红海啊,竞争多激烈,你为嘛还要往那个方向去啊,对吧?你不想想其他的门道吗?那其他的门道是什么?

你把这种贝叶斯的这种框架应用到现在的已有成果上,看看有没有改进,这不就是你的方向吗?有的时候思路要开阔啊,同学们就是。不要太拘民。现在用户是用BP算法做故障诊断。

但是不知道怎么能判断出来输入值里面的异常数据。嗯,还是那个问题啊,就是我我我知道你们缺的是什么了,你们缺的不是一个算法人员,你们缺的其实是一个。嗯,叫产品经理吧,就是就是AI方向的产品经理啊。

他需要和用户去大量的沟通和讨论。如果你是在实验室,你老板应该做这个工作。如果他不做的话,你们应该有同学快速的成长为这个角色啊。首先你要成为那个方向的专家啊,首先你要需要把你的。模型算法的呃。呃。

内在逻辑和专家进行沟通啊,这都是需要需要学习和锻炼的部分。OK好了,我们时间啊差不多,我们需要进入下一部分内容。刚才这几位同学啊,比如说像这个嗯。623406这个同学。然后。哦。

刻以课下的时候找一下咱们群里的这个。这个。呃,相应的老师,然后领一门课吧,然后我把这个呃记一下是哪个同学的,我看看啊,别忘了一会623406是吗?好嗯好,那我们继续续继续吧。嗯,一会儿吧,我们看看情况。

OK回到第二个问题啊。😊,今天第二个问题是这样,就是。呃,我们会有很多的模型要学啊,这是我们我把这个图啊,是我们在呃集训营课程当中会介绍到的一些模型呢做了一个呃图示啊,做了个图啊。

你可这个图里面呢每一个每一个框啊代表的都是一个模型。那么模型和模型之间的这个箭头指明了这些模型之间的发展的脉络啊,发展的脉络。所以说你会发现啊它都没有单独的啊很少啊。你比如像。

ad boost啊这种这种模型啊,因为不是说这些单独啊,就是说和它相关的模型没有在我们课程里面体现出来,能明白什么意思吧?就是说我们课程里面会有一些介绍啊,有一些模型的关联性很强啊。

所以说它的这个脉络发展就很明晰啊,有一些。相关的模型就没有介绍,没有过多介绍。所以呢就就显得好像是呃单独的奔他自己,但是其实不是好吧?那么简单举一个例子啊,举几个例子。

比如说啊呃当然先说明一下机极学习原理部分是作为基础部分啊,你比如说像刚才我说的。什么叫做输入是吧?什么是输入空间,什么是输出,什么是输出空间,什么是模型?什么是模型空间。那这三个空间啊,什么是参数。

什么是参数空间,对吧?这这四个空间彼此之间什么关系,像这种东西你给得非常清楚。呃,这就是所谓的行话,就在这行就干我们这个工作,这都是不言而喻的一些内容。但是你需要把这些基础的东西弄得非常清楚。

就是你认为的就是大家认为的而别出现那种你认为的和大家认为的不是一回事儿,那这个事就坏了啊,就是说你说不到一块去,这。这是最尴尬的情况啊,你认为你不是这个圈子的同学是吧?这是关于这一部分呃。

基础部分今天就不不不再过多的介绍了啊,我们课程里面会单独的拿出一部分来做基础介绍啊,今天的重要是把这个脉络啊给大家介绍一下。比如说啊我们从这个线回归开始。啊,如果学过数据结构的同学。

你会发现这其实有个托扑一个托扑结构是吧?托扑结构,从一个节点开始向其他节点嘛是吧?呃,线性回归可能我觉得有些同学可能大部分同学啊都都有所掌握是吧?多元线性回归啊,我们建立一个线性模型。

一个标准的线性模型来进行一个回归预测是吧?进行一个回归预测,我觉得这都不是问题,那问题就在于你会发现从线性回归啊,我们可以直接引出所谓的逻辑回归和感知机模型。而这三部分呢。

我们把它称之为叫做广义线性回归,就它基本这的基础模型就是线性回归模型。只是在线性回归模型的基础上加一稍微的改造,就得到了两个非常重要的模型。一个是逻辑回归。一个是感知机。为什么说它俩重要呢?

其实不是说它俩本身有多么重要,是因为这两个部分作为基础模型,又引出了两个非常重要的模型,一个是人工神经网络。另外一个知识向量机,而这两个应该是大名鼎鼎的,对吧?又取得了非常重要的工作的模型。

你会发现沿着这条线上能往回倒。我们在回归着往回倒,我们都有SAM之前都很好的工作是吧?那它所在感知机模型的基础上加以改造得到的那感知机模型呢又是从神经从线性回归上得到的,你会发现就从这个角度上。

你会看的话,知识向量机啊或和神经网络复杂到这样的模型,其根本还是线性回归。😊,那你说有同学特别是有些。开始刚开始接触的同学啊啊一看信性回归这东西啊,那么简单是吧?千万不要有这么一这种想法。

就是每一个模型都不简单啊。它如果你能够把它构建出这种。知识脉络的时候,你会发现你从简单的模型往后倒啊,一定找到一个很好的一个部分啊,往后倒啊,那复杂模型就往前倒啊。

你可以发现啊它不过就是从它的一个改进发展得到的形成这种逻辑体系以后,你心里不慌是吧?你不慌乱是吧?当你比如说举个例子啊,你比如人工神经网络,人用潜柜神经网络对吧?多少年了,有以以它为一个基础啊。

比如说你像CNRN像GN啊,发展又又又是又是一个非常大的一个发展。那么在CNN里面。这个地方今天没展开哈,C以又是一个像爆炸式的一个发展啊,你像RN里面,我们有RSTM像GRU是吧?

这也是各种各样的生成对话网络啊,各种各样的花里胡哨的改进,但是再出来一个新的网络,新的就不着急了,是吧?一看啊,它无非就是基于前馈前面一个什么网络的一个什么问题是吧?

引用了一个什么样的方法和手段得到了一个改进哦,原来是这样,对吧?你把它一个新的一个节点嘛,揭露到你的发展脉络里面去啊,你自己的这种。😊,能力边界也得到了扩展,也知道了他是怎么来的。通过对他的分析。

你发现哦他是这样来改进的啊,取得了这样的好的成果。我那样改改是不是也可以啊啊,行不行啊,拿数据模型走一下,看看结果保不齐更好了。那这样的话你写论文不就有方向了吗?谁水几篇论文不就可以了吗?是吧?

当然这只是理想情况是吧?好,所以说啊今天呢一会儿啊我们第三部分就是以感知机模型为为为这个例子吧啊,以感知机模型为例子吧,给大家介绍一下,它怎么来的是吧?它是怎么从信性回归来的,那到哪去,它怎么改进。

得到这是向量机啊,作为一个例子和大家做一个介绍啊,这是这是这是一条线啊,这是一个脉络,另外一条脉路,你比如像决策树模型啊,决策术模型。😊,I例3对吧?你如果商的概念,你如果信息增益的概念。

这个部分都是信息论里面的内容。一、设计出来D3算法。那么ID3算法呢有问题。啊,我们又引进一步的引入所谓的信息增益呃,信息增益比啊,这么一个工具啊,改进成C4。5。从C4。5呢。

我们又又改进成比如说用基极指数演化出了看的数是吧?所以说艾迪生C4。5看的数这个发展过程啊是非常标准的一个从简单到复杂啊,从呃就是问题的提出到问题的改进这么一个一个流程啊。

那么再往后啊再往后以看的数为所为基础,我们再引入所谓的boing集成方法,你一棵树呃功能不是那么的好,没问题啊,我把你这多棵树进行一个集成就是所谓的BD性啊,集成决策数那么集成决策数呢。

我们引入所谓的GB立体啊,用一些梯度来拟合我的残差啊,我就是G比离体梯度体值种取来的数。那么try boost啊。GBDT不是一阶梯度吗?我们知道展开更高次的梯度对我们的函数拟合是更有帮助的是吧?

我用二阶梯度是不是也可以啊,那就二阶梯度呗,那就是的改进之一。那另外一部分就引谓的整个方向大欧米不管怎么样,你会发现这么复杂的模型往不就是从一阶梯度换成二阶梯度?GBT不就是用梯度来拟合我们的参差嘛。

再往前倒,我不就是把多棵数你把多棵把一棵数用多核数进行拟合吗?每一棵数要么你是,要么你是C45,要么你3那你会发现原来你搞懂了改进一点5再改进加改进G后以说你会发现你再看到一个新的工作的时候。

你发原来不就是这针对它的改进部分做调整就可以了这是一个脉络另外一个脉路呢就是关于该部分啊,为例,一个公式吧?😊,这东西呃,万年不变的BS公式。但是以这么啊标准的BS公式或者BS模型为例。

反复的应用加和规则和乘绩规则。我们在引引变量假设的前提条件就可以构到HMM。然后进一步的发展就是CRF条件最异常。那这一部分啊,那这一部分继续往下,就是所谓的概率图模型啊。

其实刚才有有同学提到了那个呃强化学习啊,其实概率图模型也是一个非常重要的方向。我们没有把它完整的把它展开啊,概率图模型,就是在图上就完整的图计算,我们怎么去完成的啊。

特别是引入了所谓的呃概率的相关的内容。当然在这个模型的计算过程当中,我们引入所谓的期望最大算法啊,有一个比如说有一个问题我们的解决,我们就用期望EM去解决它,就EM期望期望最大。

我们呢还可以引入所谓的GIM以期望最大为期起点我们可以和啊各种各样的聚类算法,特别是你像K均值啊,K均值,我们可以当然。😊,🎼可以通过以期望最大这个角度上去导出所谓的K均值模型来啊。

当然聚类算法又是一一个非常重要的脉络。但是不管怎么样,你会发现一旦你把相应的一些模型。能够融入到你整个的知识框架里面去以后。啊,能够融入到你的直识框架里面去以后,你会发现。

得到的一个效果就是新的工作的发展方向。其实你很清楚,比如说在你现在的知识框架边界上,这都是很好的方向是吧?CN的改进有哪些各种各样的。😊,C域模型是吧?LTM方向的改进有哪些各种各样的RP模型。啊。

你都知道新的工作是在哪来的啊,从哪儿来的?然后你今后要到哪儿去啊,这样的话是一个知识体系的一个构建。好不好?看看这一部分有什么问题吗?我们可以一块讨论一下。

啊,最后还没完啊。

啊,最后还有一部分就是这部分就是。呃,希望大家能够在进入到集训营课程之前,或者说中间啊,或者说是后面一定有一个完整的呃梳理的过程。什么叫完整的梳理过程?就像刚才那些模型。头绪很多,对吧?

脉络也也也也也也也挺复杂。那这个时候应该有一个你就是相对完整的时间,能够把这些模型能够逐一的啊能够梳理出来啊,呃推荐一些参考教材吧,好吧,呃,中文版的两本啊,一本呢是那个周志华老师的西瓜书啊。

就是积续学习,这个应该不用做过多的介绍了。另外一本呢也是大名鼎鼎的李航老师的统计学习方法。那这两本书呢,建议大家至少有一本啊,你能够完整的从第一页看到最后一页别划水啊,这样才能在至少在面试的时候。呃。

hold住啊,这是现在的这么一个判断。如果这两本再分析一下的话呢,呃西瓜书呢是面广啊呃统计学习方法呢是深度相对来说深一点啊。呃,如果说是现在来看的话呢,西瓜书可能相对更好一些。

但是如果说你这两本都搞定了我觉得是非常不错的啊,非常不错的。那么下面这三本书呢,是当年啊在中文材料不多的时候啊,不得不去硬啃一些外文材料啊,这三本是当年的呃。镇山之作吧,就是一个人就PIM2是吧?

这个另外一本是M2APP另外一个就是ESL啊,这三本书当年是哎入门的就是三座大山啊,至少有一本当年你需要啃一遍的,就像现在这两本中文材料一样啊,说明一点,像PRM2上,它是标准的以贝尔斯框架啊。

作为这个理论框架来完成的。所以说它里面的所有的模型啊,都是带着贝尔斯的这种。这种方法论在里面呃读起来哈,不如像MLAPP和ERS这种呃逻辑上就是文科逻辑上,其实人家逻辑也挺好,就是读起来顺畅啊。

因为它的这个。这个这个这个BS框架引入以后啊,有些问题确实是世界观不太一样啊,那是世解观的问题,对吧?嗯,好,就是介绍这些内容嘛,就是现在结论就是啊中文就是这一本啊,如果时间你就把这两本都搞定。

如果你还有时间,这三本里边选一本啊,都可以,好吧,我来看看这部分有什么问题吗?我们可以一块讨论一下。

嗯。关于这一部分有什么问题吗?我们可以再交流一下。啊,是个好问题啊。我知道为什么是这样,因为神经网络模型。有的时候我们把它称之为是多层感知机。对吧对,既然是多层感知机嘛,那不就是感知机。他来的吗?

对吧这是一个很自然的一个想法。当然你这样认为也没错啊,当然你这样认为也没错。但是如果你仔细分析一下感知机模型,你会发现感知机模型是一个典型的。他的。非线性函数是一个典型的月阶函数。啊,就是一个。呃。

非连续的函数对吧?因为它是一个。分段的函数。其实你会发现标准的神经网络的。组成单元其实是什么?其实是逻辑回归模型。对吧它的那个s boy的函数是一个连续的处处可倒的函数。所以这样的一个非线性函数。

在神经网络模型里面才是我们BP算法很好的一个数学性质。当当年为什么把神经网络。定义为多层杆之基呢,其实一个很重要的原因。就是你可以理解为。蹭热点啊,因为当年感知机模型是非常非常热的一个热点。

有了神经网络当然就觉得哎多层感知机嘛,对吧?当然感知机臭了以后,神经网络就再也不提它叫多层感知机模型了啊,就像现在非常像现在啊啊,你比如说像word to啊这种模型。它能叫深深度学习模型吗?

它一共就无非就两层啊,硬加了一层exception。但是深度学习这个词是非常热的一个词,所以就是蹭热点嘛。所以你会发现有的时候不太一样。LP方向最核心要掌握的模型是哪几个,还是全都要掌握,感觉要学。

现在这个时间点上,以自然语言处理方向为例的话。一定是以注意力机制为基础的啊呃,transformer特征提取器来构造的深度学习模型。啊,呃至于其他的,你像CNN。RN呃可能现在这个时间点上。

你可以暂时先如果时间精力不充分的话,是吧?可以先稍微一放啊,但是这个。注意力机制确实是看看看现在看取得了非常重要的。好的地方。深度神经网络的BB最大。最大应用。OK我能理解你的问题啊。

这个同学的问题是深度深度神经网络和BP。可能我我认为可能这个同学说的就是呃就是普通的啊,你像前柜神经网络最大的区别是什么?这是个好问题啊。感觉三层经典的BP已经能够解决很多问题了。

其实有一个叫做哎叫什么来?我经常会把这个定给忘了,就是在一定条件之下。嗯。你比B算法。呃,为基础的三层神经网络,可以在任意精度上去拟合我们的任意函数。当然大体是这么意思啊。

具体的标准的数学描述呃是一个数学数学定理,大体的意思就是三层的神经网络其实已经可以在任意精度上去拟合任意函数。因为我们知道我们模所谓的模式识别。所谓的这个这个学习,无非就是学一个映射,对吧?

这个映射FX,它可能是高维空间里面的一个多维曲面啊,它再再复杂,也就是到这种程度了。那其实三层网络啊可以证明已经可以在任意精度上去拟合这个高维曲面。那深度学习的目的到底通用金思定理啊。

或者叫做通用逼近金定理是吧?对,是这个东西。那个呃那那深度神经网络的意义到底在哪呢?既然三层就搞定了,为什么要搞10层搞1000层,对吧?现在神经网络动不动就。成千上百层是吧?你像现在的那个bt模型。

GPT3啊,随近出来那个GPT3,它它居然触生到。几十亿的参数对吧?你你你这种模型为什么它的功能在哪儿?深度学习的最核心的价值所在在于端到端的特征提取。好,我再重复一遍。

深度学习的目的或者价值就体现在端到端的特征提取上。为什么这么说呢?因为之前呢你像三层的人工神经网络。它的特征提取就它的输入层或者它的特征空间,往往是通过人或者专家进行设计的。

或者说通过一些技术手段人工的提取出来,然后再交给神经网络。不管是做分类也好,还是做回归也好。而现在所谓的深度神经网络,我们基本上已经不在人为的干预。呃,特征提取过程,或者说我们在神深度神经网络的输入端。

直接把原始数据输入进去。至于在原始数据的基础上,怎么做特征提取,完全是由深度学习网络本身的学习能力和拟合能力去完成的。比如说像CNN,其实你看一下CNN网络哈,在前面的多层。

无非就是通过特征图去提取它的。空间特征通过持化层去降维,然后一层一层的去这样做,在最后的部分,再加上一个三层的全链接神经网络去做分类,这就是图像识别啊,就图像分类,对吧?

这就是一个深度神经网络的一个基本结结构。其实现在啊为什么说注意力机制在自然语言方面取得了很好的作用。就在于注意力机制的特征提取能力,特别是像在这种呃非连续的自然语言这种空间里面。

它的这种特征提取能力非常强,所以才造成了它在后续或者下游任务取得了非常非常不错的效果?所以说啊这个深度学习就在这儿,就是其实它也是一种自我解放和自我救赎啊,之前很多的专家特别是在CA方向上。

你比如说像什么我我有印象,因为虽然我不是做CA方向的,我我有印象。因为和其他的这个方向的其他同学也聊过,你像什么海格特征是吧?我我印象里面哈好像有这么个东西。

还有各种各样的人工设计的这种特征提取函数和提取方法,你会发现一下子在深度学习里面都不用了,或者都用不上了。为什么?因为即使是通过专家设计的这些特征提取函数,神经网络模型其实自己可以学出来了。

甚至他学的毕竟还好,那O了,那他就方他自己去做呗,是吧?是这么一个逻辑,嗯,学一个模型的时候怎样做才能更好的掌握呢?感觉其实每一个模型都很不简单。越学觉得是这样,是这样,是这样,就是我个人的建议啊。

也是在我们课程里面我反复强调的就是。第一,你需要把它的原理就是公式部分啊,每一个符号,每一个数学符号,每一个数学公式都比要搞清楚,这第一部分。第二部分和它所对应的代码逻辑必须要搞得非常清楚。

就是公式说的是原理,代码讲的是实现,而这两部分在逻辑上是完全一样的。你不能说嗯算法讲算法的,实现讲实现的,这是两个东西是吧?这两个东西必须要统一起来,至少是逻辑层面上,那么中间你可以借借助什么借助图啊。

借助一个图示,一会我们会讲一下,就借助图把这两部分统一起来,至少这三者啊,你都需要有个很明晰的概念啊,公式拿出来,你知道这个公式,每一个符号都讲的是什么?它的含义是啥啊。

特别是后面你像XX这个标量还是向量,如果是个向量它是个几为向量,对吧?你后面这个HH这个是个向量还是个还是个矩阵,如果是个矩阵,它是个几成几的矩阵,这都是非常非常清楚的。只有这样,你在写代码的时候。

你才知道哦,后边这个。n派是个数组是吧?n派是个矩阵,对吧?你这这个这个数组是个几维的,这个矩阵是个几维的。你比如说在teorflow里面,就这个张量是个几乘几的张量啊而不不一定是几乘几的。

但是几乘几乘几乘几的张量,每一枚都代表的是什么含义。所以这里都是从哪来的,都是从公式那来的,所以千万不能划出。

你都是说现在你动加orflow或者套的那个帮助文件APAPI你会发现你会发现这个这个函数哦是这样啊,是个HH是什么?看下面参数里面你会发现H属于RN乘以M的啊,原来它是个N乘M为的一个一个矩阵。所以这。

原理公式和代码必须要严格的统一起来,这是最基础的一个要求啊,当然,这个模型能解决什么样的业务问题,基于什么样的数据进行怎么样的调参,那是另外一个过程,好吧?学习生的学习的路线能介绍一下啊。

这是一个很大的问题啊,就像刚才所说的,基于不同的方向,比如说CV方向,比如说NLP方向啊,都是一个完整的一个话题。今天呢我们的时间其实不不能不是那么的充分啊。

我们还是有一些内容需要在课程里面有时间慢慢的的展呃,简单讲一下吧,你比如说以LLP为例吧,就相对比较熟一些啊,你比如说NLP为例,首先我们主要做的一些工作,可能更多的是你像词嵌入的工作,对吧?

现在来看的话,就是词的这种分布式表示形式啊,你用向量来表证一个单词,那这个时候基本的工作,你比如说玩这种基本的东西,你得掌握。比如他以后你像像啊。再往后EMO是吧?

然后再往后基于RNAN的这种神经网络的这种思想的表示形式。那再往后就是attenen了是吧?有了ten机制以后的transformer,有了transformer的bt。

有波t以后各种各样的深度学习模型。所以说这都是脉络嘛,当然这个脉络过程是嗯前后关系的是吧?看到有说法,神经网络对均匀数据上效果更好,怎么理解均匀。哦,我不太清楚它的语境啊。

我理解这个距离是不是连续的意思啊。如果是的话,确实是这样。你比如像。嗯比如说以这N为例啊,就那个生成对抗网络,它的效果往往在图像上比较不错。就是我们在做这种就是图像生成的时候,往往是不错。

但是你拿到这个网络到了自然语言处理,这就不大好使。为什么退出这种情况呢?可能就像刚才你说的呃,图像呢大约会是体现出一个连续平滑的数据。而自然语言方向的数据,可能更多的是一些离散或者是越接的数据。

这个时候可能有些模型就不是特别的好啊,大体上是这么这个是这么一个原理。如果我没理解错的话。OK好,就这样好吧。😊,啊,再看看哪个同学可以,刚才刚才是哪个同学来看看,刚才是406同学是吗?啊。

哥4A6同又问了一块问题,我觉得这个问题挺好的,然后看看。嗯,这个同学吧,这个60652同学好吧。课下的时候可以找一下我们这个。嗯,4实号同学,你的嗯。你们看吧,我们我们先讲好吧。

讲完了以后我们看看情况。😊。

啊,OK呃,后面一点时间啊,我们拿一个模型啊来做一个介绍。广义线象广义线象模型里面那个非常重要的就是感知机模型啊,感知机模型。呃,在这因为时间的原因啊,就是我们把模型的主干部分做一个介绍。呃。

核心不是讲这个模型。因为这个模型本身效果来看的话,现在来看,性能也不是那么的好,重要的目的在于。理解一下刚才所说的发展脉络的那个概念是吧?我们怎么从简单的先回归啊引出所谓的感知机。然后呢。

分析一下感知机的问题,我们看看怎么样做,才可能得到一个更好的模型。就是SVM到底在干什么。好,这是我们的目标。呃,有了这个目标以后呢,我们重点的看一下,就是学习过程当中啊。

我们以他另外一个呢就是以它为例啊,说明一下,就是原理部分你得到达到一个什么样的要求,才基本符合我们的一个目的。好吧,就是特别是在面试的时候啊,今天我也在面试。

呃,疑问到原理部分哎,往往达不到我的要求。就是你至少你得说明一下。嗯,你当前模型的输入空间是怎么样的对吧?不同的输入空间很很显然结论会不太一样。嗯,特别是有些转行的同学,还是那样。

就是这个术语和这个行话的使用。不是那么的准确,这个我觉得还是有待改进。好吧,我们看一下吧。呃,比如说啊我们以感知机模型为例,先看一下到底什么是感知机模型啊。首先看一下,假设输入空间花X是属于RN的。

我觉得啊就第一句话或者第这半句话可能对某些同学来说就有点晕,对吧?首先第一个什么叫输入空间啊,输入空间当中有个花X表示没问题核心在于它是属于RN的一个子空间,我们知道这是一个两个集合的一个包含关系是吧?

RN是个什么东西?R,我们知道是实数级。对吧R是我们的实数级,然后呢,RN又是个什么东西?RN是个N维的实数空间。如果说我们的。平面直角多标系啊平面直角多标系,这就是一个空间。所谓的空间,你可以认为。

它就是物理空间的一个抽象,对吧?你比如说平面是不是一个空间,是啊,因为平面是由若干个点组成的是吧?呃,空间就是我们的物理空间是不是一个空间啊,当然也是啊,它是个三维的是吧?那N维的是个什么样?

NV的无非就是从二维空间,三维空间的一个自然的一个扩展嘛,我觉得这是没问题的。比如说我们平面我们的平面是个R的是吧?它是由横纵两个坐标。来组成的我们的三维空间,比如说我们再加上一个。再加上一个Z。

那这不就是R3的嘛,对吧?这就是个R3的一个空间。那而无非就是。数学上的抽象,我们把它抽象到N维空间里面去。那么这是从物理上,或者说从几何上的含义。那么。对应到我们数据上啊对应到我们的数据上。

无非就是一个。有N个特征的数据表吗?😡,对吧这就是数据啊,这你你有N个维度。我把每一个维度。比如说如果是二维的话,我只有两列是吧?三维的话,我有三列,你像N维怎么把N维我不就N列嘛?

那这N列所组成的这张数据表,不就是我们的一个N维的空间嘛,就是RN的一个空间嘛。所以说从它的物理的或者几何的概念啊,和我们数据上的,因为你后面操作的是这个数据表啊,对吧?你后面操作的是个数据表。

你现在这个数据表,比如说是个N维的。比如说你的样本各数是M个,那很显然你这张数据表,我就可以用一个矩阵来存储MN列的一个矩阵,对吧?你后面做矩阵的力也好,转换也好,你知道你手头上是个什么结构的了。

给大家汇报一下,就有的时候。😊,我们并不特别关心这个。表里面的具体数值是多少?你比如说这个数值是3。7还是2。8,那这个数据给我就是这个就是给我的这个数值。我可能更关心的是当前这个数据的数据结构。

它是个几维的啊,它是个两维的那既然是两维的这个几乘几的。如果是说三维的,它是个几乘以几乘几的啊,这可能是我们更关心的。因为后面我们需要做大量的矩阵转换嗯,计算。一旦维度啊一旦它的每一维上。出现的问题。

你的你的里程都没法做啊,所以这个时候特别注意一下,这是输入空间。用什么输出空间那一样,这也是另外一个空间。就是我们需要把输入空间里面的一个元素。比如NV的是吧,这个一个一条元素把它进行一个映射。

映射到另外一个空间里面去。而在感知基模型里面,我的另外一个空间非常简单,就是由正一和负一所组成的一个空间,它到底长什么样啊,这个时候就没有一个严就是完整的这个几何几何几何体,或者说是呃能够和它对应了。

所以你你你就抽不下,你就认为你看它毕竟就是个集合嘛,如果用集合的这个思思路去考虑的话,当前这个集合里面就俩元素,一个正一一个负一,对吧?

现在我们要做的就是把一个非常复杂的空间RN空间里面的元素映射到另外一个非常简单的空间里面去,正一负一。😊,啊,这就是输入空间和输入空间的概念。那么如果能够正常的映射到这个外空间里面来。

而外空间里面只有两个元素,正一和-一,那不就完成了所谓的二分类吗?映射到正一是一类,映射到负一是一类啊,这不就完成了一个所谓的二分类模型的一个功能吗?再往后啊。

输入X是属于X画X的这里需要注意这里的X是一个元素,花X是个集合,很显然是N维的RNN维的RN空间里面的一个元素,但是需要注意这个X是用黑体来进行表示的。很显然它就是一个向量,而不是一个标量。

这个时候为什么要强调这一点呢?因为在刚才所推荐的几本书里面啊,几本书里面有些书里面是用黑体字来表示向量,有些书里面是用的那种啊就是标准的印刷体。但是呢它是也是用来表示向量。所以这个时候再给大家强调一下。

不管是读书也好,还是杜论量也好,首先读的是什么,一定不是说你马上就扎到这个论文里面去,一定找一下符号说明表,看一下它是怎么定义的啊,特别是你像非常好的,像李航老师的统计学习方法,和周志华老师。

那个那个西瓜书这两本书都有详细的符号表,都说明了我在这本书里面,每一个向量是用什么样的符号来表表示我的这个矩阵是用什么样的符号来表示啊,不要想当然的认为啊,至于这个行这个向量是行向量还是列向量。

这个这个。搞不清楚,你后面就我不认为你这个搞清搞不清楚,你后面能把原理部分搞清楚啊,行列你分不清楚,正正反你还分不清楚,那你你对吧你。你你怎么你怎么把后面搞清楚。这是关于这一部分啊,这X啊。

对应的是输入空间当中的一个点啊,平面里面的就是一个点,三维空间里面的就是一个三维的一个坐标点。然后呢,Y是属于花Y的,表示十倍的一个类别,正一是一个类别,负一是个类别。

由输入空间到输出空间的一个函数一个映射定义为FX,这就是模型啊,很多同学哈这个有。让我非常生气的是,有一有一次有一个同学继训营经都快结束了课程了,我问他到底什么是模型啊,说半天说不清楚我的同学啊。

什么是模型,FX就是个模型,不要想太多。什么叫模型啊?模型就是你给我一个X,我通过F把你映射到输出空间里面去,这不就是模型吗?同学们。😊,对吧你管这个F到底怎么映射啊,那那是那是那是具体模型要干的活。

但是不管怎么样,FX本身就是模型。不同的实现方式对F的实现不同,那它技术手段不一样,但不妨碍FX就是模型啊。特别是有了这一点认识以后,你后面再讲到这个查gebo的时候,关于数模型的模型定义。

你才觉得哦原来。啊,不排斥啊,很多同学这个地方啊,然后看一下这个模型FX是怎么定义的,感知机是这么定义的。WX加B,当然这个地方有点是内内机的意思啊,这里的W看一下,说明W和B为感知机的模型参数。

其中W也是属于RN的。很显然,W也是个向量,它的维度和X的维度是相同的,称之为是全值或全值向量。B是属于R的啊,很显然这里的R是只有一维,所以它是个标量W点X。表示向量W和向量X的内积。

所谓的内积计算啊,我们可以把它展开,展开之后,W乘以X当然这里都是向量哈,等于西格马WI乘以XI当然这里西格马I从一到N。啊,这就是我们信行代数里面啊就讲到的W点X是向量的。未接。展开以后是对应维度的。

元素相乘,然后在所有的维度上进行一个累加。下面内基的结果是个标量啊,这在我们信息代书里面都是反复讲到多多次的。重点在这个公式上左边。啊,是模型的向量化表示形式。右面是模型的标量化表示形式。很显然的是。

标量化表示形式的计算步骤和计算逻辑是非常清楚的,一目了然。对应。如果你这个还不清楚,那你不就写上W1乘以X1加上W2乘以X2对吧?对吧?加加加加到XN呃,WN乘以XN。对吧如果你不习惯这个大司马。

累加的话,大三步累加的话,你就不就把它展开,展开,不就是个累加过程嘛,对应维度相乘,然后进行一个累加嘛。标量表的形式很显然是一目了然的,每一个计算和每一个符号都是非常清楚的。一是122,没有任何的这种。

呃,困惑,因为到了乘法,标量乘法,你不能再拆了啊。当然有同学说我标量乘法也可以拆拆成加法形式,咱们这样没意义了,是吧?他加法它就是加法。但是。你会发现它非常的书写起来非常的复杂。向量形式很显然。

优点和缺点和标量形式相对应。向量形式的表优点就在于非常的简洁,我就是两个向量的对应相乘啊,对应维度的相乘就是内积计算啊,展开之后就是后面这个表达式,但是你会发现形式上非常简洁,但是理解起来。

如果你不没有清楚的认识到W是个向量,X是个向量,这是个向量内积而向量内积是后面这个式子的话,你对它就有点不是那么的清楚。给大家说一下,一定在后续的学习过程当中,随着模型的越来越复杂。

我们几乎不再会使用这种这种标量表示形式。因为模型越来越复杂呃,模型的。定义会越来越复杂。我们不可能,你比如说这个公式我把它改成向量形式标量形式行不行?还好啊,最多写两行也没问题。

但是后面的你像深度学习网络动植十几层几十层,你再用标量形式,你你你整篇纸连个模型你都定义不了,所以必须要进行抽象啊,我们有一个词叫什么降维打击,什么叫降维打击啊。😊,就是。😊,我我维度高是吧?

我我我我我从高的维度把你秒杀。标量表示和向量表示是一样的道理,就你就是这个道理。什么叫降维打击啊?我用向量表示形式来表示标量运算啊,我就从更高的抽象维度上去展示更复杂的数液计算,这不就是降维打击吗?啊。

这就降维打击。但是你会发现你不管你是标量表示形式还是向量表示形式,其实基本核心运算就是一个对应维度的相乘进行累加。这个式子就是什么?其实你会发现就这个式子,就里边这一条颠这一部分。

其实就是多元申请回归嘛。也就是说。所谓的感知机模型就是以多元线性回归模型的输出作为个感知机模型的输入。输入之后再通过一个符号函数s函数进行一个映射。而s函数就是一个所谓的分段函数。

它根据我当前输入的这个多元线性回归的值的正负号和正负性来决定我当前输出的这个。分类的类别正一还是负一?如果当前输入的这部分大于0,我就把它映射为正一。如果是小于0,映射为负一,完成所谓的分类操作。

换句话说,我们。对应性回归完成的是从RN向RN的映射。大家想想是不是这样多线性的回归啊?当然这里N可以不那么的强调,就是对吧?是从RN向R的一个映射。就说我从一个连续的N维的实值空间。

把你压缩到了一个什么?把你压缩到了一个一维的连续空间里面去。R嘛是个连续的一维空间。所谓的感知机模型要做的是什么?再借助你压缩之后的这个连续的实值空间,再把你压缩到一个离散的正一负一,这个Y空间里面去。

为什么要这样做?因为R是个连续的实值啊?我们现在要做的这个分类,分类只有两个类别,是个离散的二值。那这个时候我只需要再把你这个连。多元线性回归的实值再压缩一下,压缩到二值里面去。

不就完成了一个二分类工作了吗?而完成这个压缩的无非就是加上一个分段函数嘛。你会发现这样我们就完成了一个从R空间先压到了一个R空间,从R空间再映映射成一个二分类空间里面去的一个功能,这就是二分类。

而其中借助的这个R空间就是一个多元线性回归模型。怎么来的?就是这么来的?就是我们以多元信性回归模型的输出作为我当前感知机模型的输入来进行一个R分类啊,先从RN压到R里面去。

这个部分就是多元信息回归加到R里面,再由它啊分段函数三函数压到一个二值空间里面去,这样完成分类,这就是所谓的感知机模型要做的工作。

能明白什么意思了吧?嗯。

那你会发现在这个过程当中,借助的工具,一个工具。标量化向量化表示形式是一个问题。另外一个工具就是它怎么来的,就这么来的,你发现。中间线性回归是压到R,我现在要压到,我现在要进行分类二支,那再压一下呗。

不就完了吗?

那看一下,继续往下。

那这个问题啊好像我们搞的已经嗯比较清楚了,但是呢我觉得还不足够清楚。那么问问题是什么呢?往往你会发现。

有些教材里面他会给你画个图,对吧?他给你画个图,往往是这么来画的啊,往往是这么来画的。告诉你有一个平面里面有若干个点,直些是正样本,直些是负样本。我们要做的呢就是在这些正负样本里面呢找一条直线。

能够把正负样本严格分开啊,大体上都是这么一个图,加上这么一段文字描述。读文字的时候没问题,看图的时候,我不知道有多少同学啊看到过至少我我现在画的这个图就有问题,什么问题啊?你的坐标轴有没有看过的问题?

有些材料上啊嗯。不是那么的明确,就横度坐标到底是什么?有些有有些材料上明确的画出来了,有些同学不不去不去看啊,所以说你会发现当前这个直角坐标系是以X。输入空间来绘制的我们的模型图示。在这个图示里面。

所谓的正负样本。圆圈和叉号体现的是它的分类类别,正一还是负一。换句话说,在这个图里面隐藏了另外一条坐标轴,哪个坐标轴啊,仔细的画这个图应该长这样哈。这是X1。这是X2。这是那个Y。啊,这是那个Y。

只是呢因为这个三维空间太复杂,你你画出来也也也麻烦啊。往往这个时候呢,以这种上帝视角。去看这个图啊,你现在是这个这个这个位置上,从上往下垂直于啊垂直于这个X1X2这个平面看这个图。

你会发现Y轴是不是就压缩成了一个点了。这个地方其实有一个数轴的同学。好吧,要变成一个点了。然后呢,我们知道。😡,Y的取值算维公非只能取到正一和负一。但是一旦以这个视角上去看这个图的话。

你会发现外轴没有了,或者说外轴压缩成了一个点。那正一-一怎么体现出来了呢?很显然就不能用这个数值的。因为这个轴没有了,所以你这个轴上点也就看不出来了,所以才用的圆圈和叉号来加以表示。

所以说这条直线是WX。加B等于0,而不是Y等于X。WX加B,这是一点非常重要的区别。有有的时候这个这个。读材料啊,看原理,你这个划了水以后,我不认为你在后面SVM能懂多少,或者懂到一个什么样的程度。

好吧,这个这这关于这个图示部分啊,这个地方。回去以后找本材料啊,仔细理解一下为什么这么理解啊,因为牵扯到另外一个问题,最优化的时候,往往你看到是这种图。那个时候是W1W2。坐标轴在这儿,这是谁呀?

那个坐标轴是L损失函数。如果你不能够这样去正确的去理解这些图示的话,我不认为你理解这个这个什么叫梯度下降,怎么就怎么就收敛到这个点上去了,而且加上正则。L一正则L2正则,那为什么是L一是系疏解?

L2就不是系疏解。所以说这都是需要啊把这个数学符号和我们的这个代码公式进行一个统一起来的地方。

OK关于这个这部分看看有什么问题吗?我觉得这部分还是有同学说这个实际例子啊,123406同学啊,我知道你的需求就是你是你们是可能是工程项目上有有问题是吧?我觉得你们可以找找咨询啊,对吧?

这个这个是没有问题的呃。我们经常会碰到这样的一些呃需求,就是好像是呃课程需求,但其实会发现是项目需求。我觉得这是两个完全不同的概念。感知机怎么推到神经网络。首先第一个概念啊。多层感知机就是神经网络啊。

就是前馈神经网络,或者说多层感知机就是神经网络的一种。是这样啊,就是当我们讲神经网络的时候,它有往往语境上有两几种含义。一种含义呢就是包括深深度学习在内的所有的神经网络。另外一种呢。

这个神经网络特指的是三层前馈神经网络。啊,就三层,然后呢使用BP算法进行反向误误差传播的标准的神经网络。我们一般把它简简称为神经网络。另外呢多层感知机就是刚才我们所说的标准的三层前馈神经网络。还是那样。

所以混P这些重要名词啊,你就是我我我当然能理解大家这个在混性,就是混沌状态之下的这个理解,就是有的时候你你用词就不是特别的明确,多层感知机怎么推导神经网络,多层感知机在我理解就是神经网络。

那怎么去推导的问题,没有推导的问题,但是它俩就是一个东西。我能理解的是多层感知机,可能你理解。嗯,它是一个算法是吗?但是我理解多层感知机就是神经网络。嗯。是的,我觉得。有的时候说理解了。

我觉得理既然理解了就不能理解错,对吧?那什么叫理解正确?那至少这些符号,这些图是基础的。都不能混淆,对吧?OK那我们继续哈。

那好了,有了刚才这个图示说明以后啊,有了图示说明以后,我们现在的问题就在于我怎么样能够在。

对吧坐标轴坐标系下面这是X一特征,这是X2特征,这是所谓的正样本,对吧?这是所谓的负样本。我怎么样能够找到一条直线啊?就是刚才所说的WX加B等于零那条直线,能够把正负样本严格分开。

有问题转化成这么一个问题了,就是怎么样我们能够在平面直角坐标系X1X2之下,找到一条直线WX加B等于0,能够把正负样本严格分开的问题,对吧?呃,策略呢有很多感知机模型是使用的下一个策略。就是说。

我先定义一个距离距离的概念。点到这些距离嘛。这些点都是我们的样本点啊,它的都是已知的。那么点到直线的距离,我就可以定义成WX加B的绝对值比上一个W的二范数。

这是我们标准的解析几何里面所给出的平面直角坐标系里面点到直线的距离。如果这个有疑义,回去查一下课本啊,这是没有问题的。点到直线距离对吧?标准的点到直线距离的公式。有了这个公式以后,我们怎么去用。

我们是这么来假设的。我们分析了一个非常特殊的一个点,这个特殊的点是叫什么呢?对于一个物分类点,什么叫物分类点?所谓的物分类点无非就是正样本分到了负样本这一侧,或者负样本分到了正样本这一侧。

这不就是物分类点吗?好了,注意啊,这是物分类点。那么看一下,对于物分类点XIYI它有一个非常重要的性质什么重要的性质呢?当WX加B大于零的时候。既然当前样本点的WX加B大于0。

意味着当前这个样本点是一个什么样本,是一个正样本。正样本是在这条直线的上面,所以WX加B才是大于零的这同样是平均解析几何里面的结论。但是它虽然是一个正样本,但是我们前面刚强调过,它是当前的模型分错了的。

所以它所对应的输出是一个负一。刚才我们强调了正样本返回正一,它应该对应一个正样本,因为它符合这个条件,它确实是个正样本,但是呢。你跟人家分错了,所以你返回的这个负一。

这是在WX加B大于零的时候的一种情况。那么相对应的。如果WX加B小于0,刚才我们说过,如果WX加B小于0,它应该是个什么样本,是个负样本。但是你把人家分错了,所以它返回的是个正义。分析一下。

综合分析一下上述两个条件。你会发现,不管是你把正样本分成了负样本,还是把负样本分成了正样本。综合进行评估的话,你可以得到下面一个结论,什么结论?负的YI乘以WX加B一定是大于零的。为什么这么说?

你看一下在这种分错条件之下,我本来应该是正样本,你给了我一个负的,所以负的乘以正的是个负的。同样我本来是个负的,应该得到一个负的。但是你给了我一个正的,所以这个时候是个正的乘以负的还是个负的。

所以得到的是负的YI乘以WX加B是大于零的这么一个结论,这个结论哈。是感知机模型的,就这个模型最难的一点就在这儿。因为它是基于物分类点进行分析的,而物分类点的。两种情况啊,刚才已经分析到了。

综合上述两种情况得到了下面这个结论。而下面这个结论又给我们一个什么样的启示呢?那好了,我只需要看一下,在当前的这个分类超平面之下,我把哪些点分错了,是不是就可以啊。因为我们知道你分对了就分对了嘛。

对我来说没有任何影响。我们现在要处理的是那些分错了的点,我只考察注意啊,在感知机模型下面我只考察分类错误的样板点。只分类这些点,而这些点一定具备上面这个条件,负的YWXI加B是大于零的。

而我把这些点的距离计算一下。刚才我们所刚才我们讲到了啊,点到直行的距离应该是这个样。但是我们知道负的YIWXI加B是大于零的。因为点到直线的距离,大家加了一个绝对值。而如果我们知道这个结论以后。

把这个式子带入到上述绝对值号里面去,你会发现可以把绝对值号就去掉了。因为大于零的绝对值还是它本身,所以误分类点到分类超平面的距离公式,是这个式子。他和上面这个式子是等价的。啊,为什么是这两个式的等价呢?

是借助了刚才所分析的这个重要性结论。好了,既然物分类点到分类超平面的距离就这些,那我是不是就可以。假设超平面S的物分类点的集合为M。因为我们知道物分类点不只是一个啊,一不只是一个两个,它是一堆物分类点。

那我把这些物分类点的这个。点到直线的距离是不是可以进行一个累加?进行一个累加,而累加的这个结果就度量了当前模型的性能。是吧当前这个模型如果性能好,应该没有无分类点。如果没有无分类点的话。

那点到直线的距离就应该为0。如果当前这个模型性能很差,它把大部分的点都分错了。那么物分类点就有很多点到直线距离的累加和就很大。是吧?所以啊通过下的线这个式子。

我们就可以度量当前这个分类超频面的性能换一个角度,我们如何使当前这个式子最小的那些W参数和B。代表的是不是就是分类最好的那个模型?啊,这是一个就是逻辑上啊,就刚才我们说为什么强调数理逻辑啊。

就是我们上述的分析啊,上述的分析是定义了距离公式啊,定义了距离公式,分析了物分类点的特征。代入之后得到了一个物分类点的一个度量公式。这个度量公式表征了当前模型的性能是好还是坏,它越小性能就越好,它越大。

那它性能就越差。那这样不就说明了我们的优化目标或者说我们努力的目标不就是尽可能的。10、这个物分类点的点到直线距离的和尽可能的小了吗?对吧这就是逻辑上的一个关系。有了这个目标以后。

下面我们的工作就很简单了。就是我们在数据集D下面,这是我们已知的数据集定义我们的感知机模型。那既然感知机模型定义出来以后,那我们就可以定义刚才所谓的损失函数,就是物分类点距离我们分类超平面的距离的和啊。

可以被定义起来,定义出来。这个时候呢又碰到了感知机模型。另外一个非常不好容易理解的地方,就在于在原始的距离公式里面分母部分上是有一个W的二番数啊,W的二番数。W2份数我们可以通过。系数缩放的。

技巧使W的二反数缩放成为数值一,从而在分母部分上变成了一来简化我们的公式。下面就有一个问题,什么叫做系数缩放,举一个例子啊,比如说AX加B等于0,是我们直线平面里面的一条直线。

那么大家看一下2AX加2B等于0,是不是同样也是我们呃平面当中那条直线。你会分析一下系数,一个是AB,一个是2A和2B平面解析几构告诉我们,这两条直线系数是等比例缩放的,所以这两条直线其实是什么?

其实是一条直线。那么既然是一条直线,前面这个这个缩放系数,其实我们可以任意设置,你22可以比如说0。7850。785。是不是同样也是同一条直线。好了,通过这种缩方系数的技巧,我们把这个W的二算数。

缩放程V一,而满足这个W的二函数V一的系数。不会影响我当前直线的斜率和截距,因为我们是等比例缩放,不会影响我们的斜率和结距。所以啊这是第二个理解的方式啊,就其实还是我们的平面解析几何啊。

平面解析几何告好我们的系数等比例缩放,不影响原来直线的这个几何性质。那这样的话,我就把你这个W的函数缩为一不就完了吗?而这个技巧哈,在SAM里面也会再次使用到啊,也会再次使用到。那这样的话。

我们得到的一个损失函数就变成了。只需要观察一下负的sum XI属于M注意这里的M是物分类点集合啊,里面YI乘以WXI加B。的值是多少的问题,我们是使它尽可能的小就可以了。优化函数的极小值啊。

就是使用我们的梯度下降。所谓的梯度下降,就是在原损失函数的基础上,针对我们的参数求偏导就可以了。求完偏导让它等于0啊,解出来就是我们的优化方向啊,这是我们呃套路了啊,这就是我们的这个这个呃怎么说就是。

呃,范式啊就是标准形式啊,有了损失函数就好办了。这个事儿有了损失函数,你不就是要求W和B的最小值吗?对它求偏导啊,要求谁对谁求偏导,求出偏导,让它等于0。那它的就是它的优化方向。这个优化方向之后。

在原始的或者说在初始W的基础上在优化方向上进行不断的迭代就可以了。这是感知机模型需要注意一点的就在于什么?感知基因模型是基于物分类点的啊,感知基因模型还再强调一下,是基于物分类点。

我们把物分类点的距离进行累加啊,通过系数缩放得到了损失函数啊,再通过。求偏导使它取得绩效值,不断的收敛,得到整个感知基模型的解啊。今天这个感知基模型的解其实并不是最重要的啊。

我想说明的一点就在于感知基模型本身是怎么来的,这是重要的一点啊,就是从。

东西你回不来了。啊,这是一点。那它是怎么这这是这是他怎么来的。那第二点怎么去,就是感知机模型,它的问题在哪儿?😡。

我们看看感知模型的问题在哪。感知机目前一个非常大的问题就在于。这条直线不为一,你会发现啊哎。但是不一定非得相交啊。对你比如说这四条直线,这四条直线都可以把正幅样板进行分割,对吧?都满足刚才我们所说的啊。

都满足我们所说的,使得物分类点距离分类超平面的和最小,因为没有物分类点,所以和为0。很显然,这四条直线都符合上述要求。对吧所以说啊就比较突出的一个矛盾就是。呃。

感知机模型的模型不为一啊感知机模型模型不为一。这个时候呢带来另外一个问题就在于,既然是部唯一有若干个模型,那紧接着就会问一下有没有一个所谓的。就是所谓的最好的那个模型,就是那下面有个问题。

怎么定义这个好的问题。比如说举个例子啊。很显然哈很显然我大约感觉哎这条直线应该是所谓的更好一点。为什么呢?比如说举个例子,相对于这条直线而言啊,相对于这条实线而言,这条虚线好像既不偏袒正样本也不偏袒。

负样本。换句话说,它离的正样本和负样本都足够的远。你比如说这条实线,它对这个正样本就非常的苛刻,对吧?你你你你在这个地方才。对吧就是才能是正样本,你稍微的往外一点儿都不能再是正样本了。但是很显然。

假设有一个数据在这儿。我们知道这个数据好像是正样本的。概率应该更大一点,因为它离着正样本足够的近,对吧?你会发现当前这条实线对于这个饲样本太宽容了,是吧?它都到这儿去了就。

这一部分都是说用于是负样本的合理区间。所以说啊你会发现。在多个正府样本可分的模型里面,我们要找到一个所谓的好的标准。蜡。更进一步的去优化当前的模型。而这个好的标准,刚才我们也已经分析了。

就是使得正样本和负样本距离这个分类超频面的距离都足够的远。才是所谓的更好的。对吧那怎么去定义这个更好呢?我们就进一步的引出了所谓的几何间隔函数间隔的概念。有了几何间隔和函数间隔。

我们构建在几何间隔之下啊,所谓的最优化模型,最优化条件,那就是带着约束条件的最优化。那这个时候我们在引入所谓的拉格尔乘子法,解这个带约束条件的最优化。那这个时候你会发现再用SMO方法把它的解解出来,哎。

你会发现哎这条直线就是刚才我们所说的啊,满足了距离正府样本都足够远的这个条件。那就是更好的一个分类超平面嘛。而这个思路所构建的分类模型,就是我们的SM支是向量级。好,我觉着今天的内容应该足够的。

需要消化一些了啊啊知识力度还是比较大的啊。当然有同学说啊,你这个东西我都都都都都了解,是不在于这些模型本身,而在于刚才我们所说的那几点啊,比如说知识框架的问题啊,你现在回去以后,今晚上是吧?

一会儿课后你能不能把你现在已经学习的框架前后关系能够找找出来理顺了。第二个,学习模型的过程当中,这些基本符号是不是用对了啊,是不是和代码能够今天没有时间讲代码啊,就是当然我们也没有必要。

还有另外一个问题啊,就是有些同学会问,我们现在有没有必要啊,不借助包是吧?我们用基本的python是吧?大不了这n派啊,手写一遍基础算法。当然这是一个很好的。工作啊,如果你有时间,这是一个很好的工作。

呃,很遗憾的是,有些同学或者有些同事对吧?上班了没有时间。那也没关系,所以说这是那一个锦上添花的事情啊,如果你有时间你可以写一遍,对你理解起来,特别是有一些复杂算法。像SM像后面的神经网络。

如果你能够手写一遍,推一遍PP对吧?推一遍SMO我认为你对它的理解是相当充分了的啊,不推,如果你仅从公式层面,或者说数学层面上去理解了,那也其实可以了,好吧。因为后面真的到后面约神经到了深度学习部分。

我们基本上把所有的反向传播都交给了呃框架来去完成,我们基本上不再去人工的去做这部分工作了。

好了,我今天的内容呢准备了这些内容呃,当然哈还有一些的问题啊这个。肯定还会有。然后呢,我们看看还有时间稍微交流一下,好吧,看看。嗯,刚才那个例子我想了一下,其实我们之前做了很多的项目。

其实真的是可以给大家做一个介绍。有机会吧。看看如果有机会感兴趣的话,我们后面会有一个方法论的介绍,就是举一个我们实际工程项目怎么去做?就这个活里面有哪些同学,哪些就是有哪些呃甲方乙方是吧?甲方有哪些人。

乙方有哪些人啊,这个活怎么去干啊,用这个例子来讲一下这个实际的这个项目过程,好吧。呃,神经网络和深统学习的书入很多,看着有些恍惚啊。啊,这个我给大家推荐一个嗯。邱希鹏老师的有一本深度学习和神经网络。

或者叫做神经网络,有深度学习。邱希鹏老师啊好像是。哎,哪个学校老师也忘了一下想不起来了,名字我还记得。对,这个这本书还是非常不错的。要比花书哈,我觉得这个花书不建议现在基础不太扎实的同学。去看。

因为你get不到它的点啊,确实那本书很好啊,不是说那本书不好,是因为你得你得你得你得经历了那个阶段啊,你才能体会出它的好,否则你刚看书体会不是那的深刻啊,这个我觉得。还是需要这个什么的。对。

只计算物分类点啊。啊,是啊,我是争取能够把这个事情讲的更清楚一些。对,SWM为什么问的少了,是因为他不像以前取了这么好的工作了啊,对,复旦大学的邱新红老师是是那个什么问的多了,差一部都问的多了。

因为那个东西取得了比SVM更好的这个工作。哎,这个同学655470呃,刚才记录过这个同学吗?哎,我找不到了呢。没有啊,那那这个同学这个什么吧。客户啊可以找找找一下这个老师。看看有没有课程合适的。

看看还有什么问题。🤧。呃,不是ar boost的,是叉 boost的,是这个东西。我把前面几个同学记一下。刚才还有哪个同学来着?623442。好吧,看看还有什么问题吗?有没有回放是吧?应该有吧。

应该是有规放。这个是我的微博,然后呢。我会几乎啊啊每天都会有一些论文或者项目的分享,感兴趣的同学可以关注一下。我觉得还是挺好的。嗯,个人感觉啊。okK呃,还有什么问题吗?如果没有什么问题的话。

其实我这里今天。ly呃给了我5个名额,现在我记录了4个,分别是65547062340660652和623442嗯。还有没有同学希望领个课程之类的?有吗?最后一个名额。嗯嗯。诶。啊。

这个同学啊558932。没有办法,我们的算法只能是分现在先服务是吧?那不好意思啊,我我手上只有5个名额。呃,刚才加了一个是558932同学,这样的话我会把这些数据呢和后台的老师更新一下。呃。

课后的话可以找一下我们群里面的这个这个相关的老师。啊,其他的同学就不好意思了,你这个嗯我手头上就只有这些内容了,好吗?好了,呃,非常感谢各位同学啊,今天晚上我们有这么一个机会和大家交流一下,是这样,呃。

也是希望能够把一些相关的内容呢和同学们有一个介绍,也非常欢迎同学们啊,能够呃加入到我们这个相关的课程当中,特别是像集训营和就业班的学习过程当中来。呃,我们一起啊把这个方向的有些内容,呃。

不管是新学习也好,还是回顾也好,我们加深一下。啊,今天呢我的主要内容就是这么多啊,感谢各位同学们就到这儿,好吧,谢谢大家。

如果还有什么意见的话,可以反馈到我们群里的呃相关老师那里。我们会有一些专题的课程,或者说专题的一些交流。因为嗯其实是这样,这个我们我们之前都会有一些线下的一些专题讲座呀。

或者专请一些业界的大咖呀去来做一些分享的活动。因为考虑到限于今年呃这个疫情的情况对吧?大家也可以理解,所以这些活动少了一些。当然可以是线上,但是线上的效果可能没有线下那么的好。当然看情况吧。

后面我们会陆续的开开启一些这个相关的一些呃专题讲座呀,或者说是一些专题的课程。啊,对,是我的微博,可以加一下。如果有兴趣的话呃,加不加,其实看个人情况吧。好,今天我们的时间就到这儿了,感谢大家。

我们就到这儿好吗?有什么问题的话,我们通过课程群也好,还是微信群也好,都可以再及时的交流好。😊。

人工智能—深度学习公开课(七月在线出品) - P1:CNN训练注意事项 - 七月在线-julyedu - BV1EW411K7Mw

呃,下面来说一个非常头痛的一个事情啊,早期早期的这个神经网络。😊,进展不大,直到12年出了第一个啊呃非常非常。就有一定深度,但也同时能用的神经网络在alXnet之后呢。

大家发现后面除了非常非常多的神经网络,对吧?对Xnet这个啊google的net等等等等。为什么直到这个时候就爆炸式的增长了这么出来了这么多神经网络。

因为它提供了一个很好的初始值给后年这些搭建的神经网络去训练。最开始的时候这个训练啊,当你的层次alexnet它是7层的。当你这些神经网络层次到这样一个层次之后呢,它训练起来就非常非常困难。

经常会狗带中途。你训练训练的就发现没有梯度传回来了。你训练训练的就发现前箱运算的这个W可能。通通都跑回都都变成零了。这个我们叫做这个大家知道中间有一层叫基地层,对吧啊。O这张图可能不太合适。

大家不用看这个结果啊,我们就。比如说这个地方它是一个基地层,对吧?你经常发现基地层出来的东西没没东西了,变成零了。或者是你反向传回去的这个。梯度变成零了,这很糟糕的事情,你学不到东西了。

所以就训练不下去深度深度呃,当你的深度比较深的时候,你就训练不下去,都是原因都是因为它太脆弱了。这个神经网络你的初始的这个权重取得不合适的话,你去年训练就发现他学不下去了。

然后所以呢这个事情非常非常的重要,后来就有一大一大波的人开始琢磨这个细节。大家如果去翻一下这两年的这个paper,你会发现。居然有paper就是真的在讨论这个问题。

说我们用什么样的方式去初始化这个神经网络的权重,可以让它的这个我们叫鲁棒型,对吧?robost这个健壮性是最强的,而不会说因为你输入的图片。啊,比比如说这个地方是这个神经网络,是CNN卷积神经网络啊。

解决图像的问题的话,不会因为你输入的这个图像,这个像素点的值或者是其他的一些原因,导致你输入的变化,而导致这个神经网络在训练的时候。挂了。有paper专门在做这件事情。

所以我们把这个东这个地方我们给大家整理一下,拿出来说一下啊。最早期的时候大家想法是这样的,说那要不然的话我就。我就这样初始化一下,我就让所有的权重都等于0,行不行?权重权所有的权重初始化都等于0吗。

这是一个。大家在其他的时候啊,比如说我们之前做我们之前做这个梯度下降的时候,我们要取一个初始的位置,对吧?我们取一个初始的位置,那个没问题。你说我取一个,我从零点开始,对吧?你从任何一个值开点开始。

我最后都可以收敛到这个位置,对不对?好,但是呢如果在神经网络当中啊,我们不管什么样的神经网络,我们不单只这个CNN啊,如果是一个深层次,我们叫DNN好了,因为叫。

deep neural network对吧?深度神经网络。如果你在这样一个神经网络当中,你把所有中间会用到的这个权重W都取为0,会出现什么样的一个1一个现象呢?你看啊,所有现在这个值都是0。

大家要知道这一层,第二层的这个神经网络的这个input,就是它的这个输入是上一层的输出,对吧?这个in inputput是怎么计算得到的呀?是由上一层的这个输出和这个权重去做线性组合拿到的,对不对?

所以呢这个时候你会发现他们是他们变成了一个什么样的结构。在在这个学术界上,我们把这个结构叫做对称性的一个结构。你会发现所有的神经元,因为它都是由这三个节点和这个权重权重做线性这三个权重做线性组合拿到。

对吧?而当你现在的权重全都取为零的话。呃,不管中间有没有加这个activation,就是我们说的这个激励函数啊,我们先不管这个东西,我们我不管它有没有加激励函数。

但你发现不管它因为他做的操作都是同样的操作,对吧?所以你最后拿到的这个这个这个这个这4个神经元的input输入是一模一样的。再往后推一层呢,因为你权重还是初始化的是零啊,所以它这个时候还是一模一样的。

它会形成一个现象,叫做。对称的。对称性非常非常的尴尬啊,因为我们期待我大大家如果回忆一下的话,我上节课给大家讲到这个我们说这个CONV转基层的时候呢,我们提到了一个概念。

我们说每一个future大要做的事情实际上是什么呀?每个feer在做的事情时,我在观察我所关心的那一那一部分的信息,对不对?也许是颜色,也许是纹理。但你现在的这个初始化的过程。

导致所有的东西都是一模一样的,保持对称。这样的话我没有办法分化出来不同的filter。你往前推进的时候,计算结果也一样,我求我做这个我用SGD啊,用BP算法BP反向传播去求梯度的时候。

求它的传播传回来的梯度也是一模一样的,导致我下一步的迭代也是一模一样的。这个时候就很尴尬了,你会发现所有的神经元都是都在学同样的东西。这个时候你就达不到我们我们希望。大家如果去看一些讲解的话。

你经常会看到这个地方,他们提出来了一个性质,叫希望整个神经网络的结构是一个非对称的。那一种理解方式对这个非对称的一种理解方式,就是其实我们会我们会希望它能够分化出来不同的权重。

以便能够有不同的这个filter出现。Yeah。这是这是一个理解方式啊。所以W全取零的话是不合适的。因为它会带来对称性,你做一遍前向运算,再做一遍反向运算,你会发现所有的东西变化的状况都是一模一样的。

这个时候它没有办法去学习这个东西。那说明全取一样的值全全取零或者说全取一样的值,这都是一个很尴尬的状态。那现在我们不能用一模一样的值去初始化,所以我们要做一些变化,对吧?好,于是呢大家就有想法了说。

如果嗯那如果不能取零的话,最适合的方式,当然是大家想到说那我们就取一些随机的数了,对吧?非常非常小的一些随机数。比如说0。0010。000002等等去初始化这些权重,对吧?

最方便的方式就是这个地方提到的,我们我们直接拉一个高斯函数,对吧?高s function,然后这个高斯函数呢均值是0,对吧?这,可能是。就是一个标准的高斯函数,对吧?一个正态分布。然后我们从里头。

然后它的这个方差是。0。0。一对吧?一乘1的-2次方,这样一个高次函数从里头随机去取一些点。然后呢,我我去初始化这个。这个网络结构啊,这个地方还要多说一句啊,你这个地方随机取的话。

如果你用n派去做这件事情的话,大家看这个语句啊,random。如果我用n派去做这个事情的话,其实它已经保保证了一个性质啊。就是其实我们在做这个事情的时候。

我们取一取一些很小的这个随机数去初始化这个W的时候,我们会希望这个W里头的正数。和负数。是一半一半。这个是。什么意思呢?就跟刚才我们这个地方提到的东西是一样的,我们会希望。这个地方能有一个非对称形出来。

就是不希望所有的东西全都是正的,或者全都是负的。所以我们在初始化的时候呢,我们会。这个地方有个小的checks,是我们希望有大概一半一半的数字,是一半正一半负。然后呢,这个时候。啊。

这个有同学问到了说这个一半一半有有依据吗?它是。我们为了为了让这个神经网络形成一个非对称性去做的一件事情。但是你想想这个事情,如果你取的正比负要多的话,你的你的权重初始化正的比负的要多的话。

它有可能会向某一侧倾斜,对吧?你如果取的负比正要多的话,它可能会向另外一侧倾斜。所以最好的方式是你至少在初始化的时候要保证它们两个东西是是一致的对吧?然后。

这种方式呢你会发现他对于层次不深的这个神经网络。因为最开始的时候,大家大家可能觉得这个方式很O啊,业业界都觉得OK因为他们训练的时候发现能够训练成功,但原因是因为他们那个时候的神经网络的层次还不深。

举个例子说,如果你只有一个隐层或者是两个隐层的话,这个初始化的方式OK的,没有问题。你你直接用这个方式初始化,就可以拿到很好的一个结果。但是。如果它的层次深了的话。它很尴尬的是。

依旧会带来一它会带来这个整个网络的一个基激地传递啊,就是activation那个部分的一个一个不对称性。这种方式。这个地方呢是对前面是对前面这个我们提到的这两种方式啊。

这是我们我们前面提到这两种方式做了一个实验。现在呢我们起了10层的这个神经神经网络,十层次大概是十,这个比较深了,对吧?因为我们要看看前面两种方式,在深层次这个神经网络上的结构。O不OK?然后呢。

总共有500个神经元。呃,这个地方取的这个激励函数呃,一会我们会说,如果你用signoid,当然我我之前跟大家说过了,我说这个大家要慎重使用,对吧?sickoid现在现在基本上已经用非常少了。

或者TTNNH我们说有有时候这个在有些场景下效果还不错。一般我们会用RELU对吧?先不管这个,我们先我们如果用这个东西作为一个激励函数。因为它也是能够保保证这个它的一个。我们叫对称性,对吧?

它的整个图像是有对称性的啊,先不管这个,它是可以作为激列函数来用的。我们如果用它做激列函数的话,我们写了一个1层的一个神经网络,然后有500个神经元。我们看我们来监控一下中间做前向和反向传播的时候。

它的一个。里面的一个变化,我们把什么东西打出来呢?第一第一个部分是层次,对吧?我们的这个layer隐层说第一个隐层,第二个隐藏,第三个隐层对吧?然后呢,第二个部分是。啊。

这个地方确实就是有有点不太清楚啊,我我回头再整理一下,把这个部分给给大家具体再看一下这个部分呢是。从这个隐层当前的这个隐层,这个第一个隐层hiden layer出来的这个。结果的一个均值,一个命均值。

我们把它叫做,对吧?然后均值不够啊,我们要看看它的一个波动的状况,对吧?所以这个地方求类STD就是我们说的这个方差。然后我们把这几个东西打出来,我们。做几轮的迭代,做不用做几轮的迭代。

我们先做一次迭代来看一看这个东西。啊,均值是是均值是权重的一个均值。对。然后我们来看一下,做一遍这个全向均值的时候啊,说错了,做一遍前向前向这个传播前向运算的时候,他拿到这个结果是什么样的。

我把它打出来这个地方是我们刚才说的均值啊,每一层的这个均值的状况,是这样的,这个地方呢是我们说的STD就是我们的这个波动的状况啊,大家可能看不清楚啊,我给大家解释一下这个位置呢。

数字旁边这个数字大概是0,这个位置呢大概这个位置是0。那把它画成一个图的话,大概是这个样子,意思是什么呢?他发现没问题啊,第一层输入的时候。第一层的这个结果。非常非常的O对吧?

就是按照前面这个方式就说实化的话,我们按用很多的随机的这个从正态分布里头取出来的这个随机的。数字。去。初始化这个W,然后你会发现在第一层的时候,第一个隐层的时候,它是OK的。为什么呀?

因为你前面的这个weight是怎么来的呀?是正态分不过来,对吧?我们人为的让它的保持了这个对称性和它的一个幅度。所以它出来以后呢,均值在这个位置。均值在这个位置是一个负的。

如果大大家可能看不清楚这个东西啊,负的1个0。000117在这个位置,然后它也是有方差的,方差是0。21。你看方差是对吧?左右,你看它是有波动的。当它传到第二层的时候,这个东西传到第二层的时候。

你会发现它的均值。这个时候减小了。已经跌到了0。000001。多了个00。0001001,然后它的这个方差已经变化已经非常小了。然后呢,你再往后传的时候就很糟糕了。你会发现所在所有的场景下拿到的均值。

你其实大家可以理解,对吧?因为我这个输出的这个W输出的这个W,如果它的这个均值是零的话,然后方差也几乎是零的话,你再往下一,那说明几乎所有所有的数都是零了,对不对?所有的数都是零的话。

是不是类似于我们刚才说的这个第一种情况啊,对不对?我们说的这种情况,对不对?那你再往后传的话,后面所有的层次其实拿到的东西都差不多都长这样,这个这个就很糟糕了。因为我们整个神经网络学习的时候是需要你。

的输出output。数去要你的这个output有波动的对吧?需要你这个output有波动,我们才能求我们才能求得不同的这个呃。我们叫梯度,对吧?然后才能往往回传,对吧?才能学习到东西。

所以呢这种方式的话,在这样一个十层的这个神经网络里头,也会发现它所有的这个。刚才说错了,这个地方叫activation,就是这个值啊,这个值均值。我说不不是这个W的一个均值。

是你在经过激励函数这个activation之后,刚才的激励函数取的是TANH在经过它之后拿到的这个值。的一个均值。你会发现这个均值现在基本上都趋于零了。然后它也没有波动了。

也就是你现在输出的这个东西均值是零,然后没有波动了。这个时候你在如果你做反向传播的会话,对吧?backwardpa的话,你你你会发现。他就学不到东西了。这是一个尝试啊,就是如果你取W取很小的这个数的话。

去做这个初始化的话,在一个层次非常深的神经网络里头,你传到后续的话,你会发现你经过激励函数之后,拿到的这个结果,它的一个均值是趋于零的。而它的一个方差也是趋于零的。也就是再解释具体一点意思。

就是你拿到这组数,其实基本上都是零了。所以输出基本上都是零了。这个时候你再做这个反向传播的话就会有问题。所以呢后来大家就那如果很小的数不行的话,很大的数行不行呢?于是我们取了另外一个取的方式啊。

就是我这个我们取了输,这个地方是输入层和输出层的这个之间的一个值。这个地方呢。应该说是节点的个数,大家可以理解成是节点的个数。也就是说,如果你的前面的输入层的个数是4,输出层的个数是三的话。

这个地方我在两者之间啊举一些举一些数,因为这个时候它是比较大的数,对吧?刚才取到这个数是非常非常小的,正态分布里头出来,大家能理解对吧?所以你这个时候呢,你你如果取比较大一点的这个整数的话。

你会发现一个问题啊,就是呃大家大家如果有印象的话,会记得这个函数,它和sigoid我们都说了有一个。有一个很糟糕的地方是当你啊。signoid是这样的对吧?CNNH的话。反能是。移动了一下。

但是呢你会发现它在这个位置在你输入区域。很大的时候,比如说去无穷的时候,它有一个有一个。我们说的这个状态叫做饱和的状态,对吧?也就是我们说梯度已经传不回来的状态。

然后你如果你用现在用这样一组数据做这个权重,做W的这个输入的话,你再去看一看你现在经过这个激励函数这个DNAH之后,拿到的输出的这个结果的一个均值和它的一个方差的话,你会发现这个时候和前面刚好相反。

前面是传已经趋于零了,对吧?这个地方到后续的话,所有的均值和方差都趋于零了。但到这个位置了,但这种情况下呢,你会发现它频繁的在跳。这个是这个是它的一个均值啊,均值的话你会发现要么在上面,要么在下面。

这个是它的一个方差。方差的话,所以它的状态是。它基本上饱和了。要么跳到负一的位置,要么跳到一的位置。你看这这是在两侧,对吧?有两条线太发散了,就这样一个状态。

所以呢你就发现太大的这个呃太小的这个数呢和比较大一点的数呢都不适合去做这样一个权重的数始化。后来有论文提出了这个方式啊。

这个方式这是210年的论文提出来的方式是我们怎么去取这个W呢取的方式是还是像刚才说的,我们有输入层的这个个数,对吧?有输出层的这个取这个。个数对不对?

所以呢它是把输入和输出层的这个个数里头取了一个随机数呢,除以了它。输入的个数的。平方根。正好问,这个东西是有一个数学依据的啊呃大概。大概是这样的,我们假设这个这他在做一个事情。

我们希望输出层的这个方差能够维持住和输入层输入层的这个方差基本是一致的。那这个东西它是可以可以在数据上证明一下的啊。比如说我们来看一下啊,我们输出我们输出假如是呃output吧,对吧?

如果要求它的一个方差的话,大家看一下,实际上那你输你的这个输出输出层是怎么得到的呀?简单一点来说,如果它是一个全链接层的话,你可以理解成是。对吧一个一个加权嘛。对不对?所以这个地方的话。

如果你把它展开来的话啊,如果这个地方的话,大大家知道这个sigma可以拿到外面,对吧?就是它的一个一个呃方差的话,实际上是等于。等一到N的这个它本来就是一个一个一个求和嘛。WYXI对吧?

那这个东西的一个呃方差的话。它其实是可以等于。嗯。O我直接把那个稍等一下,大家我直接把那个网页儿给大家。好,拿过来。看一下。我之前。对,大家能看得清这个输入吗?啊,能大家能看得到这个。

如果这个地方的输出是S的话啊,假如假如这个输出是S的话,它其实是由前面的XI输入,对吧?做和W去做一个线性加权之后得到的东西,对不对?所以它的一个方差,实际上等于这个东西的一个方差,对吧?

和X之间的关系是这样的,所以呢我们可以把这个西格玛拿到前面,对吧?实际上这个这个东西的计算呢,可以看作是W每每一个的I从一取到N就是总共。I从一取到N每一个输入这个XIWI的一个方差,对不对?

那这个东西的话,你是可以展你是可以展开的。好。大家可以自己去看一下啊,这个地方回头。拔出来。最后你把它展开之后呢,有一部分东西的一个均值,前面的这个东西的一个均值都为零了。

所以只是只剩下最后这个部分的一个。一个均值。最后是一个N倍的一个关系。呃,给个链接。好,OK啊,大家这个这个地方呢,我们我们不细讲了,它是有一个有有数学理论的这个呃推导的,我们是希望输出的这个方差。

保持和输入的方差是处在同样一个。变化的一个同样一个一个一个大小差不多的大小,这样能保证每一层大家能理解,对吧?从这一层输入。这一层这一层的输出它是有一个方差的对吧?是这一层的输入,对吧?

这个叫这个是output一,对吧?但是它是我们的input的第二层的一个输入,对吧?input2,所以我们会拿到一个output2。我们希望这一层的输第一层的输出和第二层的输出。

它们之间是维持在同样一个方差的一个一个大小的,也就是波动范围是一样的。不然的话大家可以想一想,当你层次很深的时候啊,如果你后面一层比第一比前一层的这个方差要大的话。

那意味着它是一个非常非常发散的一个过程。当你。往后推进推进的层次比较深的时候,后面的波动就非常非常大了。所以我们希望每次控制一下,那控制的办法呢是什么呢?

就是以前以前我们没有batch normalization,待会我们会提到ba normalization,对吧?呃,可可否人为的控制方差。这个一会我们会提到。

我们有个方法叫ba normalization。那个方法呢是让神经元自己去学习到怎么样去控制住这个方差的一个波动。我我只是说我们最开始的时候,我们刚才说了。

如果你完全不控制这个方差的一个一个波动状况的话,不管你是取大的值还是小的值,你会发现都会有问题。所以呢现在呢我们有一个想法是我们我们为了控制住这个它的输出的这个方差的一个一个变化情况。

我们在W的取值上做了一个小小的一个技巧,是我们让它除以根号N了。至于说中间的这个过程的话,大家可以一数学推导过程的话,大家一会可以可以看一下啊,就是把这个地方展开了,你会发现前面有几项的地方呢均值是零。

所以只剩下后面的一项,你会发现它们之间是有一个方差值,它们两两两个方差之间的一个关系啊,一个倍数关系是N倍的啊。呃,只要求后面的波动不大于前面的不就行了吗?呃,要求后面的波动不大于前面的话不一定行啊。

我们仔细看第一种情况,不就是后面的波动不大于前面的波动吗?就是你但是你这样的话,可能后面会逐渐的趋于零啊,我们还是希望它有波动,只不过我们希望这个波动状况是可控的。

而不是说是一个发展或者是极度的收缩的状况。因为在那种情况下的话,当层次升起来了,它都会有问题,对吧?所以。呃,是所有的层的权重放在一起,按高斯分布赋值吗?还是每呃,这个时候应该是每一层负值的。

因为你仔细看这个公式,你会发现它和前一层和后一层的输出前前一层的神经元,后一层的神经元的个数是有关系的,看到了吧。所以它是一层一层去复值,不是所有的东西都放在一起复值的。呃,刚才说的这个方式。

刚才说的这个方式是他们之前因为没有用RELU对吧?所以用的是TANH的时候,发现这个方式是OK了。很尴尬的是,当大家提出了这个。这个嗯。RELU线性这个记累单元之后呢,就是大家知道这个图长什么样,对吧?

这一段后面突然起来Y等于X这一段发现放到这里头之后呢,这个方式它现在就不生效了。就是你的那个。放到这个激励函数之后,它就不生效了。因为他们大家去做了一个实验。为什么?因为它的处理方式啊。

大家会发现这个东西的一个方式。RELU的输入和输出之间的关系和我们刚才说的TNH或者signoid它是不一样的。signoid的话它会约束住在一个一个范围内,对吧?但RELU的话,它是一个。线性的嘛。

对吧?所以它的输出其实如果你的输入input的非常大的话,其实它输出也是非常大的。所以他发现这个时候用用根号N约,你就约束不住了。你这个地方除以根号N。你你去画一下的话,你会发现呃前前期是有波动的。

然后再往后的话,你发现他又摔减了,又衰到这种状况。为什么RELU不是111个直线?这个我们上节课提了,你可以回去看一下上节课的一个视频啊。我们说了,就是如果是一条直线的话,会有问题。

所以在在呃15年的时候,15年的时候还专门发了一篇paper。这天这篇paper呢很有意思啊,它只调了一个东西。😊,就是原来你是除以根号N,它现在在RELU这个激励单元使用这个激励函数的时候呢。

它把根号N换成了。根号2分之N。他发现这个时候他就正常了。大家来看一看这个这个装好。这个时候你会发现。这是一层一层啊,层次逐渐变深。你会发现在前面的时候。你看均值大概在。这个位置它是这样波动的对吧?

有有这样一个波动的,有有这样一个方差波动的一个状况。然后它到第二层的时候,它还能维持住这个方差。到第三层的时候,还是直到最后一层,你会发现它都能维持住一一个一个正常的一个方差的一个波动。

然后这是它的一个lo。这是他的一个。你会发现它是逐渐衰减的,能正常的工作的对吧?呃,这个这篇paper我没有仔细看,15年的这篇paper我没有仔细看。

但是有他有提出来说2分之根号2根号2分之N可以完成这个事情。不过呢呃这是因为之前之前啊我们所有的神经网络的W都是我们自己手调的。也就是说我们手动的去指定它这个时候怎么样。去取这个值。

所以那个时候的checks非常就是大家说的这个小这些技巧非常非常。找起来非常非常的困难,他需要做大量大量的实验,然后去观察看什么样的情况下是最合适的。呃,后面一会儿我们会提到啊。

有一个东西叫batch normalization,这个东西是可以让让你的转积神经网络现在自己去自发的去学习出来现在一这样一个约束。嗯,这个重复了哈。好,就就。😊,提到了。

所以在我们提出来这个大家看到这个google提出来这个ba normalization之后呢,呃之前呢大家可以看到当时最好的最好的这个W的一个取值方式是输入个数输出的个数,在中间随机取一个数,对吧?

然后再除以2分之N,这个N是你输入层的这个神经元的个数。那这种情况下呢,他大家会发现如果你你跟一下这个状况的话,你发现大大部分情况下,它工作还是正常的一个状态。

但是你还是要小心一点去保看一下中间的那些状态啊,去去去跟一下。

人工智能—深度学习公开课(七月在线出品) - P2:CNN之卷积计算层 修订版 - 七月在线-julyedu - BV1EW411K7Mw

大家看接下来的第二个。你接下来遇到这一层是哪一层的?是这个白色的对吧?叫做comvolutional layer。OK它叫做卷基层。那这个卷积层呢,他做的事情实际它这是非常重要的一层啊。

因为有了它能够把我的参数量极大的往下降。可能会有一点点的复杂这一个层次我我我给大家讲了,大家尽量跟着我的思路来,大家尽量跟着我的思路来。学呃这个理解这个这个事情啊,呃有问题的同学一会儿好吧。

有问题的同学,我们讲完这一层,一会儿再问,好不好?因为中间一直打断的话,可能听录播的话会觉得连贯性会有影响。所以我们第二层叫做卷积计算层,叫做convolution layer。它做的事情呢是这样的。

我们给大家先大家先不要看上面这些概念啊,先给大家一个直观的一个理解。说如果我现在要去看这幅图像,对吧?那我的人工神经网络做的事情是什么?人工神经网络找了很多神经元啊,你把每个神经元看做一个小朋友就好了。

之前我们不是说了吗?找了很多个线性,很多条直线线性分类器去划分那个平面,对吧?那每一条直线你可以看作一个小朋友,他有一自己的一套世界观价值观。他去判别这个东西,他有自己很肯定的一个答案。他去看这个东西。

他觉得呃他他他他会对这个微博或者知乎上的东西会有自己的一个评价。OK所以现在是现在这个问题换成了一幅图像。所以是这幅图像,你丢给这么多个神经元,让他们去做解读,或者让他们去做理解。好。

所以你现在找了5个小朋友过来,对吧?好,我们给他编一下号啊,这叫123455个小朋友过来。所以每个小朋友呢。他觉得我去看整幅图。压力实在太大了。或者他说我的能力不具备,一眼我我眼睛比较小。

我做不到一眼去看一下整张图片。所以你就想了一个办法,你说okK现在我的分布式计算,我所有的这些啊okha do或者是hado生态或者park生态的这个md做的事情,无非就是把它并发出去,然后去做做一个。

再收集回来对吧?我先做一个map,再做一个reduce的操作嘛。好,所以这个时候你想了一个办法,你说这5个小朋友如果他们抱怨说自己这个眼睛小或者看不下整张图的话,你有没有办法去做处理呢?他说好吧。

那你就1。1点看行吧。首先我需要说的是图像,它具备这样的一个特性,叫做局部关联性。大家想一想啊,你在这幅图上的这一个点,它的颜色或者说它的像素值。你想一想和它最关联的是不是周边的这些点?

我找一个左下角的点,你会觉得和这个点之间的像素值会有极大的关联性吗?你不觉得他会有极大的关联性,对?所以哎我觉得这个任务好像是可以分拆着来看的对吧?所以他说好,你别着急,这个一号小朋友呢。

我我我告诉你怎么去看这幅图,他说他说这幅图是32乘以32乘以3的这这个大家能理解吧?32乘以32是长和宽,三是三个颜色通道。这个没问题吧。好,他说那你这么来看吧。你既然看不下整幅整幅图,那你就。

找一个视野。空。这个叫receptive field, receptive field。你就把它当做一个滑动窗口好了,它的视野窗好了。所以他就说你看不下整幅图,那你就看这个。好吧。

我找一个窗口给你这个窗口里头数字总我能看一下吗?所以好,所以他看这幅图的事情,作他看这幅图的方方式是,我先找了一个滑动窗口啊,这个窗口也许我我我们随便给一个值啊,也许是一个3乘以3的一个窗口。行吧。

所以是9个像素点。他说好,你现在能看得像了吗?他说我能看得像了。OK那他说。但是你还是得把整幅图都看完了。所以你不能只看这一个窗口啊。😡,对,然后他会让它开始让这个窗口在上面开始滑动。

但是滑动到下一个位置呢,可能会和上一个位置之间有重叠。嗯,比如说它是3乘以3的窗口,我如果滑动两步的话,是不是会有一格重叠呀?大家这个这一点能明白吧,所以他让一号小朋友去做的事情是说。

你的视野如果能够盖住3乘以3的窗口,没问题,你先看3乘以3的窗口,从左上角开始往右滑动。当你把这一行看完的时候,再往下挪,再往右挪。大家能理解吗?

这样3乘以乘以3的窗口会通过这样一种向右滑和向滑下滑的方式去覆盖整幅图片。到目前为止,大家能理解这种方式吗?你先别管他做的操作,好吧。OK所以这是卷积神经网络。最关键的。一点之一啊几点之一。好。哎。

那但是他这个操作又从哪里能够体现我把参数降下来呢?这个事情呢我不知道大家有没有印象,我上节课给大家讲。😊,提到了一点,我说现在的这个dep learninging啊,你去完成很多任务啊。

用ar network neural network就完成很多事情啊。比如说这个我们就说他做英语题,好吧,这个英语题目ABCD4个选项它能给出答案,但是你并不知道它是怎么做的,对吧?

我们说有一个所谓的体感或者是语感这样的东西在是由什么东西决定的,是不是有这样一组W啊。意味着说W是不是决定了,如果我生动一点来看啊,在我这个例子当中。

是不是决定了这个地方一号小朋友或者2号小朋友或者3号小朋友的。世界观呢或者说他的语感,他的体感呢是不是由这组W决定的呀?所以刚才你你不是在抱怨,你说我啊这个ok。😡,我的这个天黑请闭眼。

然后然后啊天亮请睁眼,你睁开眼睛以后,你看不下整幅图,所以你现在是一个窗口,一个窗口看的对吧?所以他想了一个办法,他说。我现在想把刚才的全连接的这样一组W的维度给它往下降,对不对?

但同时我们又知道一个事情,我们知道这样一组W实际上决定了他所谓的体感或者是语感,或者说他对于这个世界的认知,或者是他在完成这个任务时候,他的一种理解,一种判断。所以他做了一个事情,他说。哎。

我能不能这样做,大家看看这个窗口在滑的时候,窗口的大小是不变的对吧?也就是3乘以3的窗口里头就9个点,对不对?所以他说我就固定住这9个点的值行不行?我固定住这个9个点的值,只是让我的这个窗口在滑动。

每次去看到不同的图像。偶尔在看不同的图像的时候,我去做信息抽取。都是用的这一套模板或者用的这一9个数组成的价值观世界观,我的认知体系去看的。我这么说,大家能明白吗?

也就是意味着我这个9乘3乘以3的99个点的数据窗在动,但是我固定出了9个连接值W。这么一套世界观,这么一套判定标准去看这幅图,因为就是同一个人嘛,你每个人要有自己自己的准则。

要有自己的处处这个世界观价值观,对不对?那没问题啊,我就每个人我就固定住固定住一组W,固定住9个W。而这5个小朋友会有5个不同的。9个数的W我不知道大家能理解吗?打小朋友一是W一,小朋友2是W2。

小朋友三是W3,但是他他们都是9个数,只不过这9每个小朋友的9个数是不一样的。能理解我说的事情吗?所以大家如果能理解就好办了。因为刚才全连接层或者说arial neural network人工神经网络。

它最糟糕的事情在于说一个小朋友,你还要求他去看每一个每每一个小窗口的时候都用不同的价值观,不同的认知体系去看,或者说你你希望他一睁眼天黑天天亮请睁眼睁眼之后就看到整张32乘以32乘以3的图片。

他说我做不到。我如果去做的话,我也是强行把它记下来,这个事情太糟糕了。所以他说你就分一分块。但是我有个要求,你分完这个块以后去读这张图片的时候,你必须保持你的一致性,怎么去体现出来这个一致性。

或者体现出来。我看这张图片的时候,我是很专一的,我的方式就是一致的,就是他固定出来这9个数。所以。😡,这一点大家明确了没有?我给大家解释清楚了没有?这个3乘以3的。3乘以3个W。

OK所以我们这么去理解这个事情啊,所以这里头会涉及到一些概念,会涉及到一些概念。第一个概念叫做ds,叫做深度。所以你去看同样的一张图片。我为什么要让这么多个人来看呢?因为大家都知道你在知乎上有讨论。

才会有碰撞,才会有进步嘛。所以这个时候我找了5个小朋友过来看,我说你们5个小朋友都发表一下自己的意见,都觉得都告诉我从从这张图片里头看到了什么,我再去汇总。对吗?

所以这个地方ds指的是有多少个人去参与这个知乎的讨论,有多少个人去看这张图像。看这张图片,这个能明白吗?大家。因为一号小朋友在看完这张图以后,它会有一个计算的结果。2号小朋友他又会有一个计算的结果。

3号小朋友会有他的计算结果。这些计算结果我们都把它叫做feature map。所以你有几个小朋友,你最后的feature map具有多少层?而所谓的层就是这个地方的厚度的意思。我我说明白了吗?

这个地方第一个概念叫做厚度,叫做death。它指的是小朋友的个数,它指的是你下一层的nen的个数。它指的是你下一层filter的个数。我说明白了吗?好。第一个概念就是这个意思,因为要有碰撞才会有进步。

所以要有要有大家的意见汇总综合才能看到东西。所以我会找很多个神经元,我会找很多个小朋友,我会找很多个neon,多个futer过来做这个事情。ok。第二个概念叫做步长,叫做stride。他的意思是说。

你固定了一个33乘以3的一个窗口,而你这个窗口在滑动,你是不是应该告诉我说每次滑多少步?不要着急,一会儿我会补充大家的这些问题好吗?大家先跟着把概念过一遍,不要着急O。第二点是步长啊,是dide。

听清楚了,你取了3乘以3的窗口,这个窗口是不是会有一个滑动的操作?你滑动了,是不是要告诉我这个步步子要滑多大?所以刚才我说的这个滑动两格,这个二就是这个地方的stride这个意思。明白吗?

所以上面的ds对应这张图里头是5这个地方我刚才说的stride等于2。好,第三个概念叫做zero cuttingdding。就入padding是这样一个概念,说大家想一想这个事情啊。

如果你现在是32乘以32乘以3的这么一个数据矩阵,你要以5乘以5的窗口。每次滑。啊,我就我我我随便举一个数子啊,划三步。你能够刚好从最左边滑到最右边吗?他不一定吧,哦我举一个最简单的例子啊,现在是一个。

4乘以4啊,sorry,我这个图画的真是很尴尬啊,我是一个4乘以4的一个窗口。好,如果现在是我取4乘以4的一幅图,如果我取了一个3乘以3的窗口,我要求他说你每次给我划两步。你告诉我说他从这个位置滑两步。

他滑到哪了?他冲出去了,对吗?所以它不能刚好从最左边滑到最右边,对吗?对他不能整除。所以为了让它整除,我会做一个事情。我会在边缘补一圈磷。这一圈一圈或者是多圈零。

这些补零的值就叫做zero patterndding,它叫做填充值,它叫做补零值。好。到目前为止,我给大家解释了这三个概念,我再回过头来说一遍啊,这次大家听清楚。如果刚才没有听清楚的同学,这次听清楚啊。

本来我是跟大家我是跟大家说,希望大家下去以后看视频的那既然你有同学还没有没有清楚的话,我就再说一遍。这有5个小朋友,12345。这5个小朋友,每一个小朋友自己有自己一套处事的方式。

这体现在他自己在这个窗口滑动的过程中,自己的这一组W是不动的。这自己的这一组W是固定的。但是你不能要求说郭敬明和韩寒必须有一样的世界观。这个要求太高了。所以。2号小朋友去看这个视图的时候。

它也可以3乘以3的窗口不断的滑动,去看这个事情,去看这幅图。

所以他也会有自己的9个自己的世界观,自己的9个值组成W2,对吗?所以但是你不能要求说郭敬明的W一和韩寒的W2是一样的,这个要求太高了。这就我回答了刚才大家的那个问题,我说W1和W2。

每个小朋友的哎W是不一样的,只是他自己在做这个事情的时候,你要以身作则,要自己要要要表里如一O。好。好,所以这个问题我给大家解释清楚了吧。那刚才还有大家还有什么问题?刚才说厚度不知道是什么,对吧?

厚度你有多少个小朋友厚度就是多少feature map的意思是,待会我会做运算,我会每一个小朋友看这幅图不是干看的。你看完以后你要告诉我,你看到了什么,你看到你看到的东西,你吐出来的东西。

你就得组成一个东,组成一个矩阵,新的矩阵,它叫做feature map,就这个意思,好吧。这一页大家有问题吗?还有问题吗?呃,抱歉啊,有一个动态的图,我现。选一下啊,抱歉抱歉。

我应该课前先把这一页打开的。求角C。哦,我们先开一页。但我不太确定这个图在我们的页面。sorry,我这网有点慢。啊,我现在先把这个网页打开啊,sorry,我们先我们回到这个地方,一会儿再看啊。

先给大家说。

W1和W2是9个数。如果这9个数字不一样,W1和W2是不是就不一样?这就是一组权重而已。你换了一组组权重,是不是这个神经网络就不一样了?就是这个意思,好吧,不一样就体现在这儿。

而这个W1W2是用来做运算的O。我们要看看他是怎么算这个事情的,我们看看他是怎么做这个事情的。好吧,我们看一看他怎么做这个事情的。这是一个很简单的一个点乘。我刚才取了一个3乘以3的数据窗口,对吗?

我希望大家理解这些东西的时候,能够灵活一点。神经网络并没有是横着还是竖着的。你告诉我说,每个人体内的神经网络到是横着排的还是竖着排的。你今天躺着它就变成横着了,你站起来它就变成竖着了。ok。😊。

所以不存在横着或者竖的,它只是代表我我有这么多个神经元好吗?这么个多这么厚的 depths。没有所谓横着或者竖着啊,没有这种说法,好吧。😡,大家大家跟着这个东西接着往后往后听啊,有问题的。

一会儿一会儿再问,集中回答好不好?好吧。😊,所以我有窗口3乘以3的数据窗口data窗口,对吧?我的这个窗口会不会滑会滑动,对不对?好,我不管它滑动这个事情,我们先看看它的落它定在某一个每一个位置的时候。

我是怎么去做这个运算的。你的这一组W是不是9个数啊?所以这W是不是3乘以3的一个矩阵呢?举证和举证之间可以去做很多的运算,对吗?这个时候我们做的运算是什么呢?每一个小朋友看到每一块区域的时候。

它会吐出来一个数。它读数这个数是怎么去做计算的呢?看清楚了,你会有3乘以3的这么一个data matrix数据矩阵。严格意义上来说,它是它有三层啊,因为有RGB3个颜色通道,我们先不管这个啊。

3乘以3的,我们先看最简单的形式啊,假设它没有三个颜色通道,它只有一个颜色通道啊,灰度图,所以是3乘以3的矩阵,数据矩阵,对吧?你会有一个W,对不对?W是一个权重矩阵,它是3乘以3的一个权重矩阵。

所以由数据。和W怎么去得到它现在吐出来的这个数呢?或者说他看完这个小块以后,他告诉我一个值,这个值它怎么算出来的呢?非常非常简单,在这儿。看清楚啊,第一个位置是零对吗?和零去做乘法,第二个位置是零对吗?

去和零做乘法,最后一个位置是二,对吗?就和最后一个位置-4做乘法,再把所有乘法得到的值求和,得到这个-8。我说明白了吗?每一个小朋友在每一个区域的每一个块固定住的时候做的运算是什么?

你会看到其他的形式啊,我多提一句,你会看到有些地方有一个bios,有一个偏志向。大家知道我计算的时候,Y等于WX它是过原点的一条直线。有时候为了更准确的拟合。它会有个B,对吧?所以你在有些书上啊。

你会看到它做完这个点乘之后,最后会加一个偏质向,会加一个偏质向,好吧。所以呃这个这个都无所谓这个无所谓啊,加加不加偏之项。大家知道运算是怎么来怎么算的。对吧就是一个内机操作。

一个eleement wise一个乘法。

有问题吗?我看看图出来了图出来了。

大家能看到这幅图吗?

这是一个动态的。流程。

这个流程比刚才复杂一点点,复杂的一点在哪儿呢?在于大家看最左侧,这是图像。

这左侧的图像是RGB3个颜色通道,所以你会看到三个矩阵。第一个矩阵表示在R通道上的矩阵。第二个矩阵在B通道上的矩阵啊,记第三个矩阵在B上面的,没问题吧,所以是7乘以7乘以3这么一个三维的矩阵,有问题吗?

对。

这张图最左侧我跟大家说明白了吗?好。😊。

中间会有两列红色的两列。

听清楚了。这两地呀。每一列是一个神经元。

因为你郭敬明同小同小朋友在看这幅图的时候,必须要把RGB3个颜色通道全都看进来。

你不是色盲,对吗?所以所有的颜色,每个颜色通道你都应该看进来,对吗?

所以他去看这幅图的时候啊,不要大家不要跟我说是有6个6个神经元在这啊,只有两个神经元,中间的filterW1和filter W2只有两个神经元。只不过郭敬明和韩寒现在在看这幅图的时候。

所有的颜色他都必须看进来。所以每个神经元你会发现你看到现在固定一个位置的时候,一个矩阵的时候,他会看RGB3个颜色通道的值。

有问题吗?这个大家有问题吗?

O好。

做的运算完全一样。但是啊但是我强调一点啊,郭敬明小朋友是不是可以。

每个人在看这个世界的时候,你告诉我其实。严格意义上来,从生物学上来说,每个人看这个世界的颜色的深浅,明亮度是不一样的对吗?

所以郭敬明小朋友在RGB3个颜色通道上,你不能要求人家说我必须要用同样的W。

你不你不需要去做这个事情,所以你会看到我每一个郭敬明和韩寒两个小朋友呢都有两他的两个两组矩阵里头也都有三个矩阵,三个小矩阵,说明我可以去看三个颜色通道的时候,可以用不同的W。

O。😊。

好吗?好,所以最后得到的结果一样啊,得到的结果就是eleimate voice的这个逐个元素的内积啊,点乘以后求和以后得到的值,好吧。

这个班上有很多的初学者,所以我希望卷基层我能给大家讲明白,因为后面的layer很简单,ok好吧。

别着急啊,卷辑视经网络我讲过很多次,所以这个这个进度我是清楚的,大家不要着急好吗?郭郭敬明和韩寒到底到底怎么认识这个世界的,取决于他怎么长大的,取决于他的训练数据,取决于他爸爸妈妈怎么告诉他的,好吗?

所以。W怎么来的?W是训练算法得到的。

好嘛。好,所以卷积神经网络通过刚才的这个方式,我们说每一个神经元啊,韩寒和郭敬明小朋友去看这幅图的时候,每次看一个部分,对不对?所以参数量是不是由原来的32乘以32直接降到9了呀,能理解吧?对不对?

所以这里头这个机性质叫做参数共享性质。因为我在看一幅图的时候,我看不同的数据块,我的每一个数据块里头连接的数据窗的这个权重W这9个值是固定的,OK好不好?所以。😊,他这个他这组东西你可以理解成一个模板。

因为W是9个数嘛,这9个数你可以看作一个template一个模板。他做的事情就是现在韩寒和郭敬明的世界观。他们看图像的方式,所以每个神经元只关注一个特性,有问题吗?没有特性啊,没有问题吧。

就是每个每个人只有自己的一套世界观,所以他只关注自己关注的东西,所以他只关注自己的那一套特性。那一个特性能明白吧?好,所以。去,但是通过这样一个操作,是不是就能够把。估算的权重拉下来啊。

原本你这个小朋友和前面32乘以32都要连接,都要有W,对吧?W是这么个高的维度的,现在W是不是降成9了?所以通过这样一个方式,我们一会会看到有一个网络叫alexnet,它可以从1亿个参数啊。

一层至持一层啊,从1亿降到3。5万。对吗?😡,那这个降幅大家看到了,一亿啊1亿是1万万能降到3。5万,而且它依旧能学到东西。然后如果大家对数学熟的话,一组固定的权重和不同的数据窗口内的数据去做内机啊。

大家学过这个信号信号处理,或者说信息理论的话,也不知道或者是数学啊更高级一点数学知识的话,大家知道这个操作叫做卷积嘛,对吧?

靠。

posted @ 2024-10-23 18:34  绝不原创的飞龙  阅读(11)  评论(0编辑  收藏  举报