机器学习深度学习系统一般用什么语言实现

机器学习算法与自然语言处理机器学习算法与自然语言处理公号[机器学习算法与自然语言处理] 微信号yizhennotes关注专栏更多置顶文章最新文章{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&title&:&end to end task oriented dialogue systems&,&author&:&yzhihao&,&content&:&\u003Cp\u003E在看了几篇论文和一些文章之后,今天来做一个小小的总结。这篇文章主要分为三部分。第一部分是简单讲述Task oriented dialogue systems;第二部分是较概括的讲述现在各end to end task oriented dialogue systems的模型;第三是总结和讨论。\u003C\u002Fp\u003E\u003Ch2\u003E简述Task oriented dialogue systems:\u003C\u002Fh2\u003E\u003Cp\u003ETask Oriented Dialog Systems(领域任务型的对话系统)是针对具体的应用领域,比如餐厅预订、公交线路查询、设备控制等,以完成一项具体的领域任务为目标,代表有自动客服,领域推荐等等。\u003C\u002Fp\u003E\u003Cp\u003E对于一个传统领域任务型(task oriented) 的对话系统[1],可以分为以下三个部分,也就是SLU,NLG,Dialogue Manager。口语理解模块(SLU)将语言转换成抽象语义表示,即用户对话行为,而后系统更新其内部状态,然后系统通过决策规则确定系统行为,最后语言生成模块(NLG)将系统行为决策转化成对话。其中,状态变量包含跟踪对话过程的变量,以及表示用户需求的属性值(又称为slots)。 \u003C\u002Fp\u003E\u003Cimg src=\&v2-d80e14cbd5ab4e04de2781e6.png\& data-rawwidth=\&619\& data-rawheight=\&331\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E在分模块系统中,每个部分都有不同的方法和模型来解决。举个栗子,比如:SLU系统由从自然语言询问中识别说话者的意图和提取语义构成,这两项任务常被称为意图识别和槽位填充。意图识别和槽位填充通常是分别进行的。意图推测可以理解为语义表达分类的问题,比较流行的分类方法有例如支持向量机(SVMs)和深度神经网络。槽位填充可以理解为序列标注任务。解决序列标注问题流行的方法包括最大熵马尔可夫模型(MEMMs),条件随机场(CRFs)以及循环神经网络(RNNs)等等。由于在此主要是讲\u003Cb\u003Eend to end 的模型\u003C\u002Fb\u003E,所以不详细说明各个部分分开模型的解决方式。\u003C\u002Fp\u003E\u003Cp\u003E在任务型的对话系统中,分模块的解决方式有不错的效果,但是,这样的方式需要分开来训练各个模块,同时需要大量的特定领域的人工干预(domain-specific handcrafting),在模型泛化方面有很大的局限,在进行任务对话的时候,缺乏鲁棒性。同时随着技术的发展,如何构建个性化,更加吸引用户的对话系统也是一个较大的问题。而随着深度学习的发展,end to end 模型在很多方面有所成就,如机器翻译,文本挖掘和图像识别等。但在Task Oriented Dialog Systems(领域任务型的对话系统)方面,还有很大的提升空间。下面介绍最近end to end 模型的一些工作和我的看法,当然,如有偏颇,望指出!\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E这篇就先总结这5篇paper,若下来有其他新的再看,有必要总结话,那么就下次再总结吧!\u003C\u002Fi\u003E \u003C\u002Fp\u003E\u003Ch2\u003Eend to end task oriented dialogue systems模型:\u003C\u002Fh2\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003ELearning End-to-End Goal-Oriented Dialog[2]\u003C\u002Fb\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E基于Memory Network在QA chatbot领域充分展示了优势,而Paper Learning End-to-End Goal-Oriented Dialog则将其应用在了领域任务型的对话系统(Task Oriented Dialog System)中。模型还是原来的模型,只是用法不同而已!\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E模型如下图,和一开始的Memory Network没有什么不同的地方,但是有一点需要指出的是在End-to-End Memory Network这篇文中的output是一个词。也就是说在QA那边,回答只是一个词而已。但在生成对话的时候,一个词肯定是解决不了问题的。然而模型还是那个模型呀,怎么办呢?这个时候作者在paper中提出的是不是不用一句话一句话机器生成式的,而是恰好相反,作者在这里用的是先指定回答模板,然后基于模板生成的,模型在输出时输出一个得分,再从模板中取得分最高的那一个。这样虽然解决了生成一句话的问题,但是另外一个问题也就是领域迁移性差的问题也就随之产生。\u003C\u002Fp\u003E\u003Cimg src=\&v2-d40176bac9fe3d4b398a39e.png\& data-rawwidth=\&872\& data-rawheight=\&397\&\u003E\u003Cp\u003EMemory Network其实验数据为以餐馆预订为目的的bAbI数据集,已有开源的\u003Ca href=\&https:\\u002Fvyraun\u002Fchatbot-MemN2N-tensorflow\&\u003E数据和代码\u003C\u002Fa\u003E \u003C\u002Fp\u003E\u003Cp\u003E总结一下其优缺点:应用Memory Network的优势在于不用独立涉及 SLU,DST,也就是直接的端到端的一种训练,在其缺点在于很难结合知识库。同时在该论文中的实验是基于模板检索的各种模板还是需要自己制定,也就是存在迁移差的问题。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003ELSTM-based dialog[3]&Hybrid Code Networks[4]\u003C\u002Fb\u003E \u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E这两篇论文有很多相似的地方,首先在motivation上,可以说都是客服成长过程,这个在[3]开头有描述,在训练的时候可以看作是专家在训练一个新入职的客服,由专家提供一系列example dialogues,和一些标准答案,然后让模型去学习。学成之后上线服务,在服务的同时有结合反馈来继续学习。然后是在模型方面,从图中就可以看出相似之处,整体流程方面大概是首先输入会话,然后提取entity ,加上原来对话,转成向量,输入给RNN,用rnn来做DM结合一些领域知识,一些action mask和templates,输出决策,再基于模板生成对话,这样一直循环。最后是在训练方法上面,都提出了SL和RL都可以独立训练或者结合来训练的方式。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-4eba83ebd36cfd9a4423bd.png\& data-rawwidth=\&934\& data-rawheight=\&292\&\u003E\u003Cimg src=\&v2-54153bed4fdd6b6a980aea.png\& data-rawwidth=\&948\& data-rawheight=\&416\&\u003E\u003Cp\u003E在网上找到Hybrid Code Networks模型的实验代码--\u003Ca href=\&https:\\u002Fjohndpope\u002Fhcn\&\u003E代码和数据\u003C\u002Fa\u003E,实验数据还是以餐馆预订为目的的bAbI数据集,可以和上面的Memory Network base 模型做下对比实验。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E总结其优缺点:可以同时用SL和RL的训练方式训练,领域专家需要提供少量对话样本,就可以自动学习对话状态( dialogue states)。但是缺点是很多模块还是需要较多的人为的干预,比如需要人为干预的SLU, DST, Database模块,制定动作掩码(action mask),等等。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003EA network Based end To End trainable task Oriented dialogue system[5]\u003C\u002Fb\u003E \u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E这篇论文是剑桥大学Dialogue System Group在16年5月发表的,如下图,首先其模型中Intent Network可以理解为seq2seq的encoder部分,将用户的输入encode成一个vector z(t)。然后在Belief Trackers,这个也就是Dialogue State Tracking(DST),这里是输入原对话输出一个informable slot和requestable slot的概率分布,作用就是原来的作用,获取到预先定好的知识图谱中每个slot的分布,跟踪对话的状态。而后在Policy Network结合前面两者加上从 数据库查询的相应”知识“,形成决策,输出给Generation Network进行文本生成。\n\u003C\u002Fp\u003E\u003Cimg src=\&v2-963eadda3e395c9f07ca.png\& data-rawwidth=\&810\& data-rawheight=\&558\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E这篇目前并没有找到其代码,只是有论文作者的主页是找到其数据集...\u003C\u002Fp\u003E\u003Cp\u003E总结其优缺点:这篇论文在system中能较好的结合知识库,在项目只需要较少的人为干预即可,在其缺点在于我们需要在DST预定好领域先验知识中的slot value,而且在训练中在于DST是需要独立的训练。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003EEnd To End task Completion neural dialogue systems[6]\u003C\u002Fb\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E这篇文章中结合之前一篇paper[7]提出的User Simulator来模用户议程,来进行训练,可以说形成一个较为完善的训练系统。在User Simulator输出query给语意理解模块(LU)作为输入,语意理解模块(LU)是一个LSTM实现的,然后输出语义帧,用流行的IOB(in-out-begin)格式用于表示槽标签。在DM决策之后输出policy输出结果。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-b9c4d77e2d.png\& data-rawwidth=\&921\& data-rawheight=\&420\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E这篇paper开源了其\u003Ca href=\&https:\\u002FMiuLab\u002FTC-Bot\&\u003E代码和数据\u003C\u002Fa\u003E,是纯python无框架写的!\u003C\u002Fp\u003E\u003Cp\u003E总结其优缺点:其优点很明显就是在训练的时候是端到端的,同时User Simulator在一定程度上解决了end to end Task oriented dialogue systems训练数据难获得的问题。然后其劣势和挑战在于首先数据集不大,在训练的时候也较依赖于其特定的数据集!\n\u003C\u002Fp\u003E\u003Ch2\u003E总结与讨论:\u003C\u002Fh2\u003E\u003Cp\u003E提出我的几个想法,首先是在end to end 模型中,其实就是在想怎么把之前做的分模块要分开训练的多个模型有机的结合统一成一个新的模型,比较常见的是比如DM用RNN来做,更好的跟踪状态,用基于模板或者基于生成式或者两者结合的方式来生成对话等。\u003C\u002Fp\u003E\u003Cp\u003E在训练方式方面,RL算法在上面的论文用普遍都有用,也得到了非常不错的效果,这个是个很不错的方式,也是可以继续提出创新点的地方。\u003C\u002Fp\u003E\u003Cp\u003E最后在task oriented dialogue systems方面end to end的数据缺乏,在[7]提出的User Simulator 是一个比较不错的方式来模拟用户训练,当然在发展end to end Task oriented dialogue systems中,数据集还是个很大的问题 。\u003C\u002Fp\u003E\u003Cp\u003E在接下来的工作,我想第一是应该是怎么才能用更少的领域先验知识来构建模型,另一个也应该是怎么才能提高其领域迁移性的问题。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E参考文献:\u003C\u002Fh2\u003E\u003Cp\u003E[1]:李林琳&赵世奇.对话系统任务综述与基于POMDP的对话系统. PaperWeekly. \u003C\u002Fp\u003E\u003Cp\u003E[2]:Antoine Bordes and Jason Weston. Learning end-to-end goal-oriented dialog. arXiv preprint arXiv:, 2016.\u003C\u002Fp\u003E\u003Cp\u003E[3]:Jason D Williams and Geoffrey Zweig. End-to-end lstm-based dialog control optimized
with supervised and reinforcement learning. arXiv preprint arXiv:, 2016.\u003C\u002Fp\u003E\u003Cp\u003E[4]:Williams J D, Asadi K, Zweig G. Hybrid Code Networks: practical and efficient end-to-en dialog control with supervised and reinforcement learning[J]. arXiv preprint arXiv:, 2017.\u003C\u002Fp\u003E\u003Cp\u003E[5]:Wen T H, Vandyke D, Mrksic N, et al. A network-based end-to-end trainable task-oriented dialogue system[J]. arXiv preprint arXiv:, 2016.\u003C\u002Fp\u003E\u003Cp\u003E[6]:Li, Xuijun, et al. \&End-to-end task-completion neural dialogue systems.\& \u003Ci\u003EarXiv preprint arXiv:\u003C\u002Fi\u003E (2017).\u003C\u002Fp\u003E\u003Cp\u003E[7]:Li, Xiujun, et al. \&A user simulator for task-completion dialogues.\& \u003Ci\u003EarXiv preprint arXiv:\u003C\u002Fi\u003E (2016)\u003C\u002Fp\u003E&,&updated&:new Date(&T03:41:08.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:12,&likeCount&:7,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T11:41:08+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-961d7e421d53d92bfb1a09_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:12,&likesCount&:7},&&:{&title&:&N-gram提取特征&,&author&:&qinlibo_nlp&,&content&:&\u003Cp\u003EN-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。\u003C\u002Fp\u003E\u003Cp\u003E每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E例子\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E比如我们现在使用单元Unigram、二元的Bi-gram和三元的Tri-gram模型来对进行特征提取。\u003C\u002Fp\u003E\u003Cp\u003E我们的训练样本为:\u003C\u002Fp\u003E\u003Cp\u003E1)我去了北京天安门\u003C\u002Fp\u003E\u003Cp\u003E2)我是中国人\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E那么我们对每一个样本进行单元Unigram、二元的Bi-gram和三元的Tri-gram模型提取。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E单元Unigram来说\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Ci\u003E对于:“我去了北京天安门”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 去了 北京 天安门\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E对于:“我是中国人”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 是 中国人\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E二元Bi-gram\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Ci\u003E对于:“我去了北京天安门”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 去了\u002F 去了 北京\u002F
北京 天安门\u002F\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E对于:“我是中国人”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 是 \u002F
中国人\u002F\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E三元Tri-gram\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Ci\u003E对于:“我去了北京天安门”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 去了 北京\u002F
去了 北京 天安门\u002F\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E对于:“我是中国人”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 是 中国人\u002F\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E那么从上面可以得出,我们的特征向量包含我在训练数据中利用\u003Cb\u003E单元Unigram,二元Bi-gram,以及三元Tri-gram抽取出的不同特征,组成我的特征向量维度。\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E然后以后对应一句话,直接进行Unigram,Bi-gram,Tri-gram进行抽取特征,出现哪个特征,就统计它的频数,最后填在特征向量中即可。\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E比如上面的特征向量我列举一下顺序如:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E我、是、中国人、去了、北京、天安门、我 是、是 中国人、我 去了、去了 北京、北京 天安门、我 去了 北京、去了 北京 天安门、 我 是 中国人、\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E抽取特征过程\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E那么对于一句话“我是中国人”进行N-gram特征抽取的方法是。\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E单元Unigram来说\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E对于:“我是中国人”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 是 中国人\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E二元Bi-gram\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E对于:“我是中国人”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 是 \u002F
中国人\u002F\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E三元Tri-gram\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E对于:“我是中国人”\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E抽取
我 是 中国人\u002F\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E于是我们就在出现的词语维度赋值为1,其余没有出现过的特征赋值为0,相当于one-hot特征。\u003Cb\u003E得到特征向量如下:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E[1,1,1,0,0,0,1,1,0,0,0,0,0,0,1]\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E得到的上面这个特征向量就是我们使用N-gram提取特征方法提取出来的特征。\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Ci\u003E\u003Cb\u003E总结\u003C\u002Fb\u003E\u003C\u002Fi\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Ci\u003E\u003Cb\u003E如果我们使用N-gram提取特征,使用unigram,bigram,trigram提取特征的情况,在词汇表大小为V的时候,特征向量维度长度为[V(unigram)+V^2(bigram)+V^3(trigram)]\u003C\u002Fb\u003E\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E致谢:\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E韩宇\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T15:25:35.000Z&),&canComment&:false,&commentPermission&:&review&,&commentCount&:8,&likeCount&:16,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T23:25:35+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-2baffdcafc908f2c94f9_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:8,&likesCount&:16},&&:{&title&:&MIT线性代数课程精细笔记[第七课]&,&author&:&qinlibo_nlp&,&content&:&\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E0、前言\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003EMIT线性代数课程精细笔记[第四课]笔记见\u003Ca href=\&https:\u002F\\u002Fp\u002F\&\u003EMIT线性代数课程精细笔记[第六课]\u003C\u002Fa\u003E该笔记是\u003Cb\u003E连载\u003C\u002Fb\u003E笔记,本文由坤博所写,希望对大家有帮助。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E一、知识概要\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cimg src=\&v2-3ace30a4eccf20b6f550.jpg\& data-rawwidth=\&1372\& data-rawheight=\&216\&\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E二.消元法求解零空间\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cimg src=\&v2-78544fcb5d3bac2dbd76c9da.jpg\& data-rawwidth=\&1350\& data-rawheight=\&248\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E2.1 消元法确定主变量与自由变量(消元)\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-dd736db3b2fe203ddc74e08.jpg\& data-rawwidth=\&1350\& data-rawheight=\&760\&\u003E\u003Cimg src=\&v2-1cbfccc78e.jpg\& data-rawwidth=\&1540\& data-rawheight=\&728\&\u003E\u003Cimg src=\&v2-78a971610efba72f28bea4e.jpg\& data-rawwidth=\&1214\& data-rawheight=\&102\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E2.2 对自由变量赋值覆盖零空间(回代)\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-8dcbb4f36c7f5a17bee0cc.jpg\& data-rawwidth=\&1358\& data-rawheight=\&1096\&\u003E\u003Cimg src=\&v2-08b9b02faefd.jpg\& data-rawwidth=\&1356\& data-rawheight=\&710\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E2.3 算法总结\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-0caf1a84d2b69cc965f8.jpg\& data-rawwidth=\&1314\& data-rawheight=\&96\&\u003E\u003Cimg src=\&v2-e0ec4aad4e6.jpg\& data-rawwidth=\&1406\& data-rawheight=\&388\&\u003E\u003Cimg src=\&v2-d63a693c42d48896efeecb.jpg\& data-rawwidth=\&1296\& data-rawheight=\&1098\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E三.简化行阶梯形式\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-de9f34e57971aea2f091.jpg\& data-rawwidth=\&1332\& data-rawheight=\&488\&\u003E\u003Cimg src=\&v2-306e1b8056e1dbc72a594c37abb5e877.jpg\& data-rawwidth=\&1394\& data-rawheight=\&436\&\u003E\u003Cimg src=\&v2-4ca2d6f7eb9b9ce5954d.jpg\& data-rawwidth=\&1390\& data-rawheight=\&636\&\u003E\u003Cimg src=\&v2-da5ce181ec.jpg\& data-rawwidth=\&1396\& data-rawheight=\&424\&\u003E\u003Cimg src=\&v2-a87e679d0cf.jpg\& data-rawwidth=\&1562\& data-rawheight=\&738\&\u003E\u003Cimg src=\&v2-db526cfc07b2bb.jpg\& data-rawwidth=\&1318\& data-rawheight=\&298\&\u003E\u003Cimg src=\&v2-130e26b27c01f83c010d89a29a648081.jpg\& data-rawwidth=\&1380\& data-rawheight=\&1228\&\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E五.学习感悟\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cimg src=\&v2-eb8fcaf2a9d5dfc.jpg\& data-rawwidth=\&1364\& data-rawheight=\&260\&\u003E\u003Ch2\u003E\u003Cb\u003E版权所有、未经同意,禁止转载!!!\u003C\u002Fb\u003E\u003C\u002Fh2\u003E&,&updated&:new Date(&T10:40:12.000Z&),&canComment&:false,&commentPermission&:&review&,&commentCount&:3,&likeCount&:38,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T18:40:12+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:3,&likesCount&:38},&&:{&title&:&神经网络(容易被忽视的基础知识)&,&author&:&yzhihao&,&content&:&\u003Cp\u003E以下大多笔记主要来自cs231n和其他深度学习资料和一些我自己的补充,首先CS231n一个非常不错的deep learning课,值得一看,奉上\u003Ca href=\&http:\u002F\u002Fcs231n.stanford.edu\u002F\&\u003E链接\u003C\u002Fa\u003E,然后,cs231n本身是有笔记的-\u003Ca href=\&https:\u002F\u002Fcs231n.github.io\u002F\&\u003E链接\u003C\u002Fa\u003E,最后,知乎上的一些大神对这个笔记进行了翻译---\u003Ca href=\&https:\u002F\\u002Fp\u002F\&\u003E链接\u003C\u002Fa\u003E。在这里,我主要是将一些重要的笔记,我认为是比较容易被我们忽视的,加上查阅其他博文,做一个笔记和心得总结!\u003C\u002Fp\u003E\u003Cp\u003E这次主要讲解的内容有:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E基本神经元\u003C\u002Fli\u003E\u003Cli\u003E作为线性分类器的单个神经元\u003C\u002Fli\u003E\u003Cli\u003E为什么要是深度神经网而不是”肥胖“神经网络?\u003C\u002Fli\u003E\u003Cli\u003E为什么在人工神经网络中的神经元需要激活函数?\u003C\u002Fli\u003E\u003Cli\u003E一些主要的激活函数\u003C\u002Fli\u003E\u003Cli\u003E神经网络中的偏置有什么意义?\u003C\u002Fli\u003E\u003Cli\u003E初始化神经网络的参数可以全为0吗,其他普通线性分类器呢?\u003C\u002Fli\u003E\u003Cli\u003E交叉熵损失存在的意义和与平方差损失相比有什么好处?\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ch2\u003E神经元\u003C\u002Fh2\u003E\u003Cp\u003E下面图表的左边展示了一个生物学的神经元,右边展示了一个常用的数学模型。乍一看还是有点相似的,事实上也是,人工神经网络中的神经元也有受到生物神经元的启发。总结要点:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E在生物的神经元(也就是左图)中,树突将信号传递到细胞体,信号在细胞体中相加。如果最终之和高于某个阈值,那么神经元将会\u003Ci\u003E激活\u003C\u002Fi\u003E,向其轴突输出一个峰值信号,\u003Cb\u003E注意这里输出是一个脉冲信号!\u003C\u002Fb\u003E\u003C\u002Fli\u003E\u003Cli\u003E在数学计算模型(也就是右图)中,首先将输入\u003Cb\u003E进行加权求和加上偏执\u003C\u002Fb\u003E,得到待激励值,然后将该值作为输入,输入到\u003Cb\u003E激活函数\u003C\u002Fb\u003E中,最后输出的是一个\u003Cb\u003E激励后的值\u003C\u002Fb\u003E,这里的激活函数可以看成对生物中神经元的激活率建模。由于历史原因,激活函数常常选择使用\u003Cb\u003Esigmoid函数 \u003Cequation\u003E\\sigma\u003C\u002Fequation\u003E,\u003C\u002Fb\u003E当然还有很多其他激活函数,下面再仔细聊!\u003C\u002Fli\u003E\u003Cli\u003E\u003Cb\u003E需要注意:\u003C\u002Fb\u003E1.一个神经元可以看成\u003Cb\u003E包含两个部分\u003C\u002Fb\u003E,一个是对输入的加权求和加上偏置,一个是激活函数对求和后的激活或者抑制。2.注意生物中的神经元要复杂的多,其中一个是生物中的输出是一个脉冲,而现在大多数的数学模型神经输出的就是一个值,当然现在也有一些脉冲人工神经网络,可以自行了解!\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cimg src=\&v2-2e8d1a68d575f89c2fd471a25e69668d.jpg\& data-caption=\&\& data-rawwidth=\&600\& data-rawheight=\&173\&\u003E\u003Ch2\u003E作为线性分类器的单个神经元\u003C\u002Fh2\u003E\u003Cul\u003E\u003Cli\u003E比如基础的逻辑回归,结合上面的神经元知识,可以发现,逻辑回归就是激活函数是\u003Cb\u003Esigmoid\u003C\u002Fb\u003E的单层简单神经网络。也就是说,只要在神经元的输出端有一个合适的损失函数,就能让单个神经元变成一个线性分类器。因此说,那些\u003Cb\u003E线性的分类器本身就是一个单层神经网络\u003C\u002Fb\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cb\u003E但注意,对于非线性的模型:\u003C\u002Fb\u003ESVM和神经网络走了两条不同的道路:神经网络通过\u003Cb\u003E多个隐层的方法来实现非线性的函数,有一些理论支持(比如说带隐层的神经网络可以模拟任何函数),但是目前而言还不是非常完备;SVM则采用了kernel trick的方法,这个在理论上面比较完备(RKHS,简单地说就是一个泛函的线性空间)。\u003C\u002Fb\u003E两者各有好坏,神经网络最近的好处是网络设计可以很灵活,有很多的trick&tip,很多理论都不清不楚的;SVM的理论的确漂亮,但是kernel设计不是那么容易,所以最近也就没有那么热了。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Ch2\u003E为什么要是深度神经网而不是”肥胖“(宽度)神经网络?\u003C\u002Fh2\u003E\u003Cimg src=\&v2-68f266bee4ba7db9503e.jpg\& data-caption=\&\& data-rawwidth=\&591\& data-rawheight=\&452\&\u003E\u003Cimg src=\&v2-cb5b63b16.jpg\& data-caption=\&\& data-rawwidth=\&606\& data-rawheight=\&458\&\u003E\u003Cp\u003E“肥胖”网络的隐藏层数较少,如上左图。虽然有研究表明,浅而肥的网络也可以拟合任何的函数,但它需要非常的“肥胖”,可能一层就要成千上万个神经元。而这直接导致的后果是参数的数量增加到很多很多。\u003C\u002Fp\u003E\u003Cp\u003E也有实验表明,也就是上图的实验,我们可以清楚的看出,当准确率差不多的时候,参数的数量却相差数倍。这也说明我们一般用深层的神经网络而不是浅层“肥胖”的网络。\u003C\u002Fp\u003E\u003Cblockquote\u003E注意:说神经网络多少层数的时候一般\u003Cb\u003E不包括输入层\u003C\u002Fb\u003E。 在神经网络中的激活主要讲的是梯度的更新的激活\u003C\u002Fblockquote\u003E\u003Ch2\u003E为什么在人工神经网络中的神经元需要激活函数?\u003C\u002Fh2\u003E\u003Cimg src=\&2e83bcd9147f13ecfaf799.png\& data-caption=\&\& data-rawwidth=\&884\& data-rawheight=\&460\&\u003E\u003Cp\u003E上图可看做普通的线性分类器,也就是线性回归方程。这个比较基础,效果如右图。当然有时候我们发现这样的线性分类器不符合我们要求时,我们很自然的想到那我们就加多一层,这样可以拟合更加复杂的函数,如下图a:\u003C\u002Fp\u003E\u003Cimg src=\&7c6e12aed30bf315eed8dfb.png\& data-caption=\&图a\& data-rawwidth=\&890\& data-rawheight=\&409\&\u003E\u003Cimg src=\&ef7eb0f0dd.png\& data-caption=\&图b\& data-rawwidth=\&880\& data-rawheight=\&459\&\u003E\u003Cp\u003E但同时当我们动笔算下, 就会发现, 这样一个神经网络组合起来,输出的时候无论如何都还是一个线性方程。如上图b右边,就只能这样分类。(那也太蠢了吧)。下图表示一层加如激活函数的情况!\u003C\u002Fp\u003E\u003Cimg src=\&32cbeac5eaea9d655b9a50e4d8d0a687.png\& data-caption=\&\& data-rawwidth=\&886\& data-rawheight=\&486\&\u003E\u003Cp\u003E一层很多时候是远远不够的,前面讲过,简单的线性分类器就可以看成是一层的神经网络,比如上图,激活函数是signmoid,那就可以看成是二分类的逻辑回归!\u003C\u002Fp\u003E\u003Cp\u003E下面扩展到多层,如下图1,2:\u003C\u002Fp\u003E\u003Cimg src=\&3e4d3aabb90f51f61d3bf7.png\& data-caption=\&图1\& data-rawwidth=\&923\& data-rawheight=\&453\&\u003E\u003Cimg src=\&fab8a7ae1cbd7f03c067.png\& data-caption=\&图2\& data-rawwidth=\&657\& data-rawheight=\&331\&\u003E\u003Cp\u003E图1是一个简单的MLP(全链接神经网络),图2的右边课简单表示左图的可视化,那么对比之前的无激活函数的图,很明显是更加的非线性,拟合能力也会更强,同时可以想到,当层数更多,其能力也会越来越强!\u003C\u002Fp\u003E\u003Cp\u003E简单来说:\u003Cb\u003E就是使得神经网络具有的拟合非线性函数的能力,使得其具有强大的表达能力!\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E简单扩展,神经网络的\u003Cb\u003E万能近似定理\u003C\u002Fb\u003E:一个前馈神经网络如果具有线性层和至少一层具有\&挤压\&性质的激活函数(如signmoid等),给定网络足够数量的隐藏单元,它可以以任意精度来近似任何从一个有限维空间到另一个有限维空间的borel可测函数。\u003C\u002Fp\u003E\u003Cp\u003E要相符上面的定理,也就是想拟合任意函数,一个必须点是“要有带有“挤压”性质的激活函数”。这里的“挤压”性质是因为早期对神经网络的研究用的是\u003Cb\u003Esigmoid\u003C\u002Fb\u003E类函数,所以对其数学性质的研究也主要基于这一类性质:\u003Cb\u003E将输入数值范围挤压到一定的输出数值范围\u003C\u002Fb\u003E。(后来发现,\u003Cb\u003E其他性质的激活函数也可以使得网络具有普适近似器的性质,如ReLU 。\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Ch2\u003E一些主要的激活函数\u003C\u002Fh2\u003E\u003Ch2\u003Esigmoid\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E优点:\u003C\u002Fb\u003E有较好的解释性\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E缺点:\u003C\u002Fb\u003E1.Sigmoid函数\u003Cb\u003E饱和使梯度消失\u003C\u002Fb\u003E。sigmoid神经元有一个不好的特性,就是当神经元的激活\u003Cb\u003E在接近0或1处时会饱和\u003C\u002Fb\u003E:在这些区域,梯度几乎为0。2.\u003Cb\u003E输出不是零中心的\u003C\u002Fb\u003E,这一情况将影响梯度下降的运作,因为如果输入神经元的数据总是正数,那么关于w的梯度在反向传播的过程中,将会要么全部是正数,要么全部是负数,这样梯度下降权重更新时出现z字型的下降。这样收敛会变得异常的慢。(\u003Cb\u003E这也是为什么要一直保持为数据的0中心化\u003C\u002Fb\u003E)—–\u003Cb\u003E但这个问题比较小\u003C\u002Fb\u003E3.exp()在深度神经网络时候相比其他运算就比较慢\u003C\u002Fp\u003E\u003Cimg src=\&v2-4c8f9d60fc3a8d6797c27.jpg\& data-caption=\&\& data-rawwidth=\&408\& data-rawheight=\&278\&\u003E\u003Ch2\u003ETanh非线性函数\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E优点:\u003C\u002Fb\u003E1\u003Cb\u003E.\u003C\u002Fb\u003E它的输出是零中心的。因此,在实际操作中,tanh非线性函数比sigmoid非线性函数更受欢迎。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E缺点:\u003C\u002Fb\u003E1.和Sigmoid函数一样,饱和使梯度消失。计算慢\u003C\u002Fp\u003E\u003Cimg src=\&v2-e380672ebecf809c6edc79a9f692804b.jpg\& data-caption=\&\& data-rawwidth=\&421\& data-rawheight=\&249\&\u003E\u003Ch2\u003EReLU\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E优点:\u003C\u002Fb\u003E1.ReLU对于随机梯度下降的收敛有巨大的加速作用( Krizhevsky 等的论文alexnet指出有6倍之多)。据称这是\u003Cb\u003E由它的线性,非饱和的公式\u003C\u002Fb\u003E导致的;2.\u003Cb\u003E注意:现在大部分的DNN用的激活函数就是ReLu\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E缺点:\u003C\u002Fb\u003E1\u003Cb\u003E.\u003C\u002Fb\u003E当x是小于0的时候,那么从此所以流过这个神经元的梯度将都变成0;2.这个ReLU单元在训练中将不可逆转的死亡,因为这导致了数据多样化的丢失。\u003C\u002Fp\u003E\u003Cimg src=\&v2-bb416a44d2cdeae44d5971f0faaaf87f.jpg\& data-caption=\&\& data-rawwidth=\&369\& data-rawheight=\&295\&\u003E\u003Ch2\u003ELeaky ReLU\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E优点:\u003C\u002Fb\u003E1\u003Cb\u003E.\u003C\u002Fb\u003E非饱和的公式;2.Leaky ReLU是为解决“ReLU死亡”问题的尝试\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E缺点:\u003C\u002Fb\u003E1.有些研究者的论文指出这个激活函数表现很不错,但是其效果并不是很稳定\u003C\u002Fp\u003E\u003Cblockquote\u003EKaiming He等人在2015年发布的论文Delving Deep into Rectifiers中介绍了一种新方法PReLU,把负区间上的斜率当做每个神经元中的一个参数。然而该激活函数在在不同任务中均有益处的一致性并没有特别清晰。\u003C\u002Fblockquote\u003E\u003Cimg src=\&v2-6c63e3edff744.jpg\& data-caption=\&\& data-rawwidth=\&762\& data-rawheight=\&538\&\u003E\u003Ch2\u003EELU\u003C\u002Fh2\u003E\u003Cp\u003E指数线性单元(Exponential Linear Units, ELU) ELU的公式为:\u003C\u002Fp\u003E\u003Cimg src=\&v2-b7a4aac9274afd6cd3032.jpg\& data-caption=\&\& data-rawwidth=\&291\& data-rawheight=\&80\&\u003E\u003Cp\u003EELU.png 函数曲线如下:\u003C\u002Fp\u003E\u003Cimg src=\&v2-bb8bd8878bbcb.jpg\& data-caption=\&\& data-rawwidth=\&668\& data-rawheight=\&540\&\u003E\u003Ch2\u003EMaxout\u003C\u002Fh2\u003E\u003Cul\u003E\u003Cli\u003EMaxout是对ReLU和leaky ReLU的一般化归纳\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cb\u003E优点:\u003C\u002Fb\u003E1.拥有ReLU单元的所有优点(线性操作和不饱和),而没有它的缺点(死亡的ReLU单元)\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E缺点 :\u003C\u002Fb\u003E1\u003Cb\u003E.\u003C\u002Fb\u003E每个神经元的参数数量增加了一倍,这就导致整体参数的数量激增。难训练,容易过拟合\u003C\u002Fp\u003E\u003Ch2\u003E怎么用激活函数\u003C\u002Fh2\u003E\u003Cp\u003E“那么该用那种呢?”\u003Cb\u003E用ReLU非线性函数。注意设置好学习率,\u003C\u002Fb\u003E(如果学习率设置得太高,可能会发现网络中40%的神经元都会死掉(在整个训练集中这些神经元都不会被激活)。通过合理设置学习率,这种情况的发生概率会降低。),\u003Ci\u003E解决方案:\u003C\u002Fi\u003E或许可以监控你的网络中死亡的神经元占的比例。如果单元死亡问题困扰你,就试试Leaky ReLU或者Maxout,\u003Cb\u003E不要再用sigmoid了\u003C\u002Fb\u003E。也可以试试tanh,但是其效果应该不如ReLU或者Maxout。\u003C\u002Fp\u003E\u003Ch2\u003E神经网络中的偏置有什么意义?\u003C\u002Fh2\u003E\u003Cp\u003E最基础的神经元\u003Cb\u003E感知器\u003C\u002Fb\u003E如下:\u003C\u002Fp\u003E\u003Cimg src=\&602ceee97d817007fdf4eebb58082eeb.png\& data-caption=\&\& data-rawwidth=\&280\& data-rawheight=\&138\&\u003E\u003Cp\u003E这个例子中输入为\u003Cequation\u003Ex_1, x_2, x_3\u003C\u002Fequation\u003E 三个变量, 输出为0或1. 当三个变量的加权和\u003Cequation\u003E\\sum_i w_ix_i\u003C\u002Fequation\u003E大于某个\u003Cu\u003E\u003Cb\u003E阈值\u003C\u002Fb\u003E\u003C\u002Fu\u003E的时候, 输出为1, 反之为0.\u003C\u002Fp\u003E\u003Cp\u003E\u003Cequation\u003Eoutput = \\left\\{ \\begin{array}{ll} 0 & \\textrm{if $\\sum_iw_ix_i & $threshold }\\\\ 1 & \\textrm{if $\\sum_iw_ix_i \\geq $threshold } \\end{array} \\right.\u003C\u002Fequation\u003E\u003C\u002Fp\u003E\u003Cp\u003E注意这里的\u003Cb\u003E阈值\u003C\u002Fb\u003E, 它\u003Cb\u003E度量了神经元产生正(负)激励的难易程度\u003C\u002Fb\u003E.也就是说,在上文的模型中, 阈值越大, 产生正激励的难度越大.\u003C\u002Fp\u003E\u003Cp\u003E而为了更好的计算和表达,我们可以把其中的b和 \u003Cequation\u003E\\sum_i w_ix_i \u003C\u002Fequation\u003E 移到同一边,同时给他取了一个不错的名字,叫做偏置Bias,而w叫做权重weight!\u003C\u002Fp\u003E\u003Cp\u003E\u003Cequation\u003Eoutput = \\left\\{ \\begin{array}{ll} 0 & \\textrm{if $\\sum_iw_ix_i +b& 0$}\\\\ 1 & \\textrm{if $\\sum_iw_ix_i +b\\geq 0$ } \\end{array} \\right.\u003C\u002Fequation\u003E\u003C\u002Fp\u003E\u003Cp\u003E也就是说: \u003Cb\u003E偏置的大小度量了神经元产生正(负)激励的难易程度.\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E这是最简单的感知器神经元. 而现代神经网络中常用的Sigmoid, tanh或是ReLU都是在\u003Cequation\u003E\\textbf{w} \\cdot \\textbf{x} + b\u003C\u002Fequation\u003E的基础上加上一个激活函数, Bias也就是b的意义是一样的。\u003C\u002Fp\u003E\u003Cp\u003E同时对于偏置需要注意的点是:\u003Cb\u003E偏置是不需要正则化的,并且正则化偏置的话会导致欠拟合。\u003C\u002Fb\u003E我们从意义上去理解话,若对偏置正则化(惩罚),会导致激活变得更加简单,偏差就会上升,学习的能力就会下降!\u003C\u002Fp\u003E\u003Ch2\u003E初始化神经网络的参数可以全为0吗,其他普通线性分类器呢?\u003C\u002Fh2\u003E\u003Cp\u003E在讲初始化前,先简单复习下反向传播算法可表示为以下几个步骤:\u003C\u002Fp\u003E\u003Col\u003E\u003Cli\u003E进行前馈传导计算,利用前向传导公式,得到 \u003Cequation\u003EL_{2},L_{3}\u003C\u002Fequation\u003E ,直到输出层
\u003Cequation\u003EL_{nl}\u003C\u002Fequation\u003E 的激活值。\u003C\u002Fli\u003E\u003Cli\u003E对输出层(第 \u003Cequation\u003Enl\u003C\u002Fequation\u003E 层),计算:\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cimg src=\&v2-ab49b437a2ef3ad4d6ea3c.jpg\& data-caption=\&\& data-rawwidth=\&245\& data-rawheight=\&23\&\u003E\u003Cp\u003E3. 对于 \u003Cequation\u003El=nl-1,nl-2,nl-3,...,2\u003C\u002Fequation\u003E 的各层,计算:\u003C\u002Fp\u003E\u003Cimg src=\&v2-26bbfd39d9ca.jpg\& data-caption=\&\& data-rawwidth=\&252\& data-rawheight=\&26\&\u003E\u003Cp\u003E 4. 计算最终需要的偏导数值:\u003C\u002Fp\u003E\u003Cimg src=\&v2-a9cb3ba4cdf5a523b6bea4.jpg\& data-caption=\&\& data-rawwidth=\&274\& data-rawheight=\&56\&\u003E\u003Cp\u003E
5. 对 \u003Cequation\u003Ef\u003C\u002Fequation\u003E 举个例子,若表示sigmoid函数,就可以计算得到 \u003C\u002Fp\u003E\u003Cimg src=\&v2-c8dab2ffb7cff772a12ec7.jpg\& data-caption=\&\& data-rawwidth=\&183\& data-rawheight=\&26\&\u003E\u003Cblockquote\u003E从上往下,其中\u003Ci\u003Ey代表正确label,\u003C\u002Fi\u003E \u003Cequation\u003Ea^{nl}\u003C\u002Fequation\u003E 代表最后一层的输出, \u003Cequation\u003Ez^{nl}\u003C\u002Fequation\u003E 表达的是最后一层的加权求和值, \u003Cequation\u003Ef \u003C\u002Fequation\u003E 代表的是激活函数,\u003Ci\u003Eδ代表的是要反向传播回去的误差,\u003C\u002Fi\u003E \u003Cequation\u003El\u003C\u002Fequation\u003E 代表第l层,w,b表示权重和偏置。\u003C\u002Fblockquote\u003E\u003Cp\u003E我们前面说过:线性分类器逻辑回归模型可以算作为一个简单的单层神经网络。为了更好的说明问题,假设一个场景,在十类分类的数字手写识别中,我们将本来二分类的逻辑回归推到多分类的\u003Ci\u003Esoftmax,也就是说,神经元的激活函数是softmax。也就是下图,然后分析:\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-dd9227eee1c7b964e7c9eedf0fcad710.jpg\& data-caption=\&\& data-rawwidth=\&398\& data-rawheight=\&566\&\u003E\u003Cul\u003E\u003Cli\u003E输入层(不算是一层):28×28=784个输入单元。也就是n=784\u003C\u002Fli\u003E\u003Cli\u003E输出层:10个输出单元, 激活函数为\u003Ci\u003Esoftmax,也就是m=10\u003C\u002Fi\u003E\u003C\u002Fli\u003E\u003Cli\u003E它由两组参数组成: \u003Ci\u003EW\u003C\u002Fi\u003E和b, 前者是一个10×784维的权值矩阵, 后者是长度为10的bias 列向量.现在我们假设把它们全部初始化为0:\u003C\u002Fli\u003E\u003Cli\u003E第一次正向计算过程中, 简单算出,输出层的所有输出为0.5. \u003C\u002Fli\u003E\u003Cli\u003E反向时,根据前面复习的反向传播算法,首先计算\u003Ci\u003Eδ,\u003C\u002Fi\u003E假如 \u003Cequation\u003Ey^{i}\u003C\u002Fequation\u003E =1, 即输入\u003Ci\u003Ex\u003C\u002Fi\u003E对应的数字为\u003Ci\u003Ei\u003C\u002Fi\u003E, 那么除了第\u003Ci\u003Ei\u003C\u002Fi\u003E个神经元的\u003Ci\u003Eδ是不同的,其他的值都是一样\u003C\u002Fi\u003E, 又于计算权重w梯度的公式得知,\u003Cb\u003E注意此时的 \u003Cequation\u003Ea^{l}\u003C\u002Fequation\u003E 就是输入值x,又由于输入向量\u003Ci\u003Ex\u003C\u002Fi\u003E的元素之间的不同\u003C\u002Fb\u003E, 所以即使\u003Ci\u003Eδ是一样的,但\u003C\u002Fi\u003E最终得到的10个梯度值有很大概率是不同且非0的, 所以第一次BP过程可以取得成效并将一些\u003Ci\u003Ew\u003C\u002Fi\u003E和所有的\u003Ci\u003Eb\u003C\u002Fi\u003E变成非0值.\u003C\u002Fli\u003E\u003Cli\u003E由于w值已经变得不相同了,这个时候前向传播和后向传播也就会正常的进行, 后面的训练显然也可以顺利进行.\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cb\u003E得出结论,没有隐层时, 可以将所有的参数初始化为0.\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E如果有隐层呢?假如还是用\u003Cb\u003Esigmoid激活函数\u003C\u002Fb\u003E呢。来个更简单MLP,\u003C\u002Fp\u003E\u003Cimg src=\&v2-40e1b9f4ba06fb533900.jpg\& data-caption=\&\& data-rawwidth=\&484\& data-rawheight=\&360\&\u003E\u003Cul\u003E\u003Cli\u003E第一次正向计算过程中, 简单算出,输出层的所有输出为神经元4,5,6输出的值(初始化w,b为0,激活函数是\u003Cb\u003Esigmoid\u003C\u002Fb\u003E)都是一样的,都是0.5\u003C\u002Fli\u003E\u003Cli\u003E第一个反向传播过程,由权重的更新公式,算出即 \u003Cequation\u003EW_{6,4},W_{6,5}\u003C\u002Fequation\u003E (神经元6和4,5之间的权重)是一样的,同样算出 \u003Cequation\u003EW_{4,1},W_{4,2},W_{4,3},W_{5,1},W_{5,2},W_{5,3}\u003C\u002Fequation\u003E 都一样,但非0,由sgd算法赋值。\u003C\u002Fli\u003E\u003Cli\u003E然后第二次正向时,算出神经元4,5的输出一样(因为4,5都是接受1,2,3神经元的输入,且权重相同),但和神经元6的输出不一样。\u003C\u002Fli\u003E\u003Cli\u003E然后第二次反向时,根据公式,得出 \u003Cequation\u003EW_{4,1},W_{5,1}一样,W_{4,2},W_{5,2}一样,W_{4,3},W_{5,3}\u003C\u002Fequation\u003E 一样。原因在于计算 \u003Cequation\u003EW_{4,1},W_{5,1}\u003C\u002Fequation\u003E 用的是一样的输出,这个也可以从公式得出!\u003C\u002Fli\u003E\u003Cli\u003E最后结论,一直循环,发现学习得到的模型中, 所有的\u003Cb\u003E隐单元都是相同的\u003C\u002Fb\u003E(在这里就是神经元4,5永远 \u003Cequation\u003EW_{4,1},W_{5,1}一样,W_{4,2},W_{5,2}一样,W_{4,3},W_{5,3}\u003C\u002Fequation\u003E 一样). 学习失败.\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cblockquote\u003E对于隐层使用了其他函数比如ReLU: \u003Ci\u003Ef\u003C\u002Fi\u003E(\u003Ci\u003Enet\u003C\u002Fi\u003E)=\u003Ci\u003Emax\u003C\u002Fi\u003E(0,\u003Ci\u003Enet)\u003C\u002Fi\u003E其结果也是一样的:
除了输入层的输出值为\u003Ci\u003Ex\u003C\u002Fi\u003E本身, 不为0, 其余的所有层的输出都为0. BP时所有梯度也都为0, 包括输出层. 这意味着所有的非输入神经元都是无意义的. 学习失败.\u003Cb\u003E对于卷积神经网络,循环神经网络也是一样的,故一般会用其他初始化方式。\u003C\u002Fb\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003E最后最后的结论是, \u003Cb\u003E一般只在训练SLP\u002F逻辑回归模型时才使用0初始化所有参数.\u003C\u002Fb\u003E, 更实用的结论是, 深度模型都不会使用0初始化所有参数.\u003C\u002Fp\u003E\u003Ch2\u003E交叉熵存在的意义和与平方差相比有什么好处?\u003C\u002Fh2\u003E\u003Cp\u003E一个非常常见的,非常漂亮的成本函数是“交叉熵”(cross-entropy)。交叉熵产生于信息论里面的信息压缩编码技术,但是它后来演变成为从博弈论到机器学习等其他领域里的重要技术手段。它的定义如下:\u003C\u002Fp\u003E\u003Cimg src=\&v2-8cd1c428cc46dc0b5433798.jpg\& data-caption=\&\& data-rawwidth=\&239\& data-rawheight=\&98\&\u003E\u003Cp\u003E其中,y 是我们预测的概率分布, y’ 是实际的分布\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.交叉熵是正的,2.当所有输入x的输出都能接近期望输出y的话,交叉熵的值将会接近 0\u003C\u002Fb\u003E。这两个特征在直觉上我们都会觉得它适合做代价函数。事实上,我们的均方代价函数也同时满足这两个特征。然而....\u003C\u002Fp\u003E\u003Ch2\u003E为什么在神经网络中用交叉熵代替二次代价函数?\u003C\u002Fh2\u003E\u003Cp\u003E还是从反向传播,参数更新的角度理解更新参数的公式如下:\u003C\u002Fp\u003E\u003Cimg src=\&v2-e4d89e4bd9b75d.jpg\& data-caption=\&\& data-rawwidth=\&261\& data-rawheight=\&105\&\u003E\u003Cimg src=\&v2-4d7a9b7d68a8893ddc6d0d75ba082fe9.jpg\& data-caption=\&\& data-rawwidth=\&454\& data-rawheight=\&185\&\u003E\u003Cp\u003Ea 是 神经元的输出,其中 a = σ(z), z = wx + b,可知,\u003Cb\u003E偏导数受激活函数的导数影响\u003C\u002Fb\u003E,假设这里是传统的\u003Cb\u003Esigmoid激活函数(在之前很多时候都是)。\u003C\u002Fb\u003E那么sigmoid 的导数在输出接近 0 和 1 的时候 是非常小的,这会导致一些实例在刚开始训练时学习得非常慢!\u003C\u002Fp\u003E\u003Cp\u003E但是如果换成是交叉熵loss,其更新权重公式最后推导得出如下:\u003C\u002Fp\u003E\u003Cimg src=\&v2-c5cfad423e9cdf6ecebad34.jpg\& data-caption=\&\& data-rawwidth=\&633\& data-rawheight=\&107\&\u003E\u003Cimg src=\&v2-2a69cb3f752ea1af4bb4.jpg\& data-caption=\&\& data-rawwidth=\&419\& data-rawheight=\&107\&\u003E\u003Cp\u003E由以上公式可知,权重学习的速度\u003Cb\u003E受到 σ(z) - y 影响\u003C\u002Fb\u003E,更大的误差,就有更快的学习速度,还避免了二次代价函数方程中因 σ′(z) 导致的学习缓慢。\u003C\u002Fp\u003E\u003Cblockquote\u003E但是现在也有很多其他的激活函数并不会产生饱和状态,那么均方差也有其存在价值。\u003C\u002Fblockquote\u003E&,&updated&:new Date(&T12:05:15.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:12,&likeCount&:126,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T20:05:15+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-abef05ab89cf_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:12,&likesCount&:126},&&:{&title&:&MIT线性代数课程精细笔记[第八课]&,&author&:&qinlibo_nlp&,&content&:&\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E0、前言\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003EMIT线性代数课程精细笔记[第四课]笔记见\u003Ca href=\&https:\u002F\\u002Fp\u002F\&\u003EMIT线性代数课程精细笔记[第七课]\u003C\u002Fa\u003E该笔记是\u003Cb\u003E连载\u003C\u002Fb\u003E笔记,本文由坤博所写,希望对大家有帮助。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E一、知识概要\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cimg src=\&v2-afae20eb635.jpg\& data-rawwidth=\&849\& data-rawheight=\&139\&\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E二、Ax=b的解\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cimg src=\&v2-adbdafb7deaaa1f133a1edc3f9dd50e0.jpg\& data-rawwidth=\&818\& data-rawheight=\&124\&\u003E\u003Cimg src=\&v2-2a76aaa6d50a9e022b8ea20.jpg\& data-rawwidth=\&820\& data-rawheight=\&306\&\u003E\u003Cimg src=\&v2-e2ba29948ad71aac12dcedfbcb435f22.jpg\& data-rawwidth=\&841\& data-rawheight=\&217\&\u003E\u003Cimg src=\&v2-c28aa6a4c50ff0592acf6.jpg\& data-rawwidth=\&834\& data-rawheight=\&230\&\u003E\u003Cimg src=\&v2-9aa346cf94a09bb18805.jpg\& data-rawwidth=\&828\& data-rawheight=\&276\&\u003E\u003Cimg src=\&v2-17b1d36cf7b309586bbe87e20cc8e105.jpg\& data-rawwidth=\&822\& data-rawheight=\&319\&\u003E\u003Cimg src=\&v2-14fb114e4ec15fdbeb528c634c9af880.jpg\& data-rawwidth=\&816\& data-rawheight=\&303\&\u003E\u003Cimg src=\&v2-eceeff5a6dc8553c2ecb52da.jpg\& data-rawwidth=\&841\& data-rawheight=\&393\&\u003E\u003Cimg src=\&v2-72bcf85ea0ad435a0e5fee.jpg\& data-rawwidth=\&766\& data-rawheight=\&668\&\u003E\u003Cimg src=\&v2-ff2e5af2e2be8.jpg\& data-rawwidth=\&854\& data-rawheight=\&385\&\u003E\u003Cimg src=\&v2-fd5f5cc952fcd738ea88ac.jpg\& data-rawwidth=\&781\& data-rawheight=\&242\&\u003E\u003Cimg src=\&v2-d046c1de93dda04dc65723.jpg\& data-rawwidth=\&825\& data-rawheight=\&246\&\u003E\u003Cimg src=\&v2-ccf39c5bc2.jpg\& data-rawwidth=\&822\& data-rawheight=\&654\&\u003E\u003Cimg src=\&v2-4c4b3ed1d06cbbb579a1094.jpg\& data-rawwidth=\&818\& data-rawheight=\&287\&\u003E\u003Cimg src=\&v2-94cdedfc8fc.jpg\& data-rawwidth=\&832\& data-rawheight=\&135\&\u003E\u003Cimg src=\&v2-c7b799bdd.jpg\& data-rawwidth=\&807\& data-rawheight=\&345\&\u003E\u003Cimg src=\&v2-0fb672f616d1f633ae9f0.jpg\& data-rawwidth=\&817\& data-rawheight=\&281\&\u003E\u003Ch2\u003E\u003Cb\u003E版权所有、未经同意,禁止转载!!!\u003C\u002Fb\u003E\u003C\u002Fh2\u003E&,&updated&:new Date(&T16:17:44.000Z&),&canComment&:false,&commentPermission&:&review&,&commentCount&:4,&likeCount&:30,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T00:17:44+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-565e5ef82faaa0ca754b446b_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:4,&likesCount&:30},&&:{&title&:&结构化数据与非结构化数据的区别&,&author&:&qinlibo_nlp&,&content&:&\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E总括\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E 相对于结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频\u002F视频信息等等。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E结构化数据\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E结构化数据是数据的\u003Ci\u003E\u003Cb\u003E数据库\u003C\u002Fb\u003E\u003C\u002Fi\u003E(\u003Ci\u003E\u003Cb\u003E即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据\u003C\u002Fb\u003E\u003C\u002Fi\u003E)\u003C\u002Fp\u003E\u003Cp\u003E如下图所示:\u003C\u002Fp\u003E\u003Cimg src=\&v2-5d51b65ba00ce5564471fbf8f4fc6954.jpg\& data-caption=\&\& data-rawwidth=\&878\& data-rawheight=\&842\&\u003E\u003Cp\u003E我们可以清楚的看到能够形式化存储在数据库中,每一个列都有具体的含义。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E非结构化数据\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频\u002F视频信息等等\u003C\u002Fp\u003E\u003Cp\u003E如下图:\u003C\u002Fp\u003E\u003Cimg src=\&v2-27eaae1d6.jpg\& data-caption=\&\& data-rawwidth=\&836\& data-rawheight=\&848\&\u003E\u003Cp\u003E非结构数据与结构化数据相比较而言,更难让计算机理解。\u003C\u002Fp\u003E\u003Cp\u003E以上就是非结构化数据与结构化数据的定义。\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E参考:\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E图片来自于吴恩达老师deeplearning课程slides\u003C\u002Fi\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T03:02:06.000Z&),&canComment&:false,&commentPermission&:&review&,&commentCount&:5,&likeCount&:35,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T11:02:06+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-27eaae1d6_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:5,&likesCount&:35},&&:{&title&:&通俗理解指数加权平均&,&author&:&qinlibo_nlp&,&content&:&\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E前言\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Ci\u003E在深度学习优化算法中,我们会涉及到指数加权平均这个概念,下面我将通过例子来一步一步引出这个概念。\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E平均数求法\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E比如我们现在有100天的温度值,要求这100天的平均温度值。\u003C\u002Fp\u003E\u003Cp\u003E24,25,24,26,34,28,33,33,34,35..........32。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E我们直接可以用公式:\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cequation\u003Ev_{aver}=\\frac{v_{1}+...+v_{100}}{100}\u003C\u002Fequation\u003E \u003C\u002Fp\u003E\u003Cp\u003E通过上面的公式就可以直接求出10天的平均值。\u003Cb\u003E\u003Ci\u003E而我们要介绍的指数加权平均本质上就是一种近似求平均的方法。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E指数加权平均\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E我们现在直接给出公式:\u003C\u002Fi\u003E\u003C\u002Fb\u003E \u003Cequation\u003Ev_{t}=\\beta*v_{t-1}+(1-\\beta)\\theta_{t}\u003C\u002Fequation\u003E \u003C\u002Fp\u003E\u003Cp\u003E其中 \u003Cequation\u003Ev_{t}代表到第t天的平均温度值\u003C\u002Fequation\u003E , \u003Cequation\u003E\\theta_{t}代表第t天的温度值 \u003C\u002Fequation\u003E , \u003Cequation\u003E\\beta代表可调节的超参数值 \u003C\u002Fequation\u003E \u003C\u002Fp\u003E\u003Cp\u003E\u003Cequation\u003E假如\\beta=0.9,我们可以得到指数平均公式下的平均值求法如下:\u003C\u002Fequation\u003E \u003C\u002Fp\u003E\u003Cimg src=\&v2-d867aab342a51b94bf9bad.jpg\& data-caption=\&\& data-rawwidth=\&842\& data-rawheight=\&592\&\u003E\u003Cp\u003E化简开得到如下表达式:\u003C\u002Fp\u003E\u003Cimg src=\&v2-ab8fb1f005f9a0f17ff8d040ff0e276f.jpg\& data-caption=\&\& data-rawwidth=\&2622\& data-rawheight=\&842\&\u003E\u003Cp\u003E通过上面表达式,我们可以看到,V100等于每一个时刻天数的温度值再乘以一个权值。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E本质就是以\u003Ca href=\&http:\u002F\u002Fzh.wikipedia.org\u002Fw\u002Findex.php?title=%E6%8C%87%E6%95%B0&variant=zh-cn\&\u003E指数式\u003C\u002Fa\u003E递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E而在我们上面提到的普通平均数求法,它的每一项的权值都是一样的,如果有n项,权值都为1\u002Fn。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E指数加权平均的本质还可以用下图表示:\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-ed3ad6a670.jpg\& data-caption=\&\& data-rawwidth=\&596\& data-rawheight=\&600\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E指数加权平均的结果是由当天温度值乘以指数衰减函数值,然后类和求得!\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E指数加权平均的优势\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E那么指数加权平均法有什么好处呢?首先我们来看它的实现:\u003C\u002Fp\u003E\u003Cimg src=\&v2-de9afff877cac.jpg\& data-caption=\&\& data-rawwidth=\&902\& data-rawheight=\&606\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E我们可以看到指数加权平均的求解过程实际上是一个递推的过程,那么这样就会有一个非常大的好处,每当我要求从0到某一时刻(n)的平均值的时候,我并不需要像普通求解平均值的作为,保留所有的时刻值,类和然后除以n。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E而是只需要保留0-(n-1)时刻的平均值和n时刻的温度值即可。也就是每次只需要保留常数值,然后进行运算即可,这对于深度学习中的海量数据来说,是一个很好的减少内存和空间的做法。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Ci\u003E参考:\u003C\u002Fi\u003E \u003Ci\u003E图片来自于吴恩达老师DeepLearning.ai课程slides\u003C\u002Fi\u003E\u003C\u002Fblockquote\u003E&,&updated&:new Date(&T03:58:26.000Z&),&canComment&:false,&commentPermission&:&review&,&commentCount&:8,&likeCount&:16,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T11:58:26+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-14f11500a1bbd9ac029acb_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:8,&likesCount&:16},&&:{&title&:&MIT线性代数课程精细笔记[第九课]&,&author&:&qinlibo_nlp&,&content&:&\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E0、前言\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003EMIT线性代数课程精细笔记[第二课]笔记见\u003Ca href=\&https:\u002F\\u002Fp\u002F\&\u003EMIT线性代数课程精细笔记[第八课]\u003C\u002Fa\u003E,该笔记是\u003Cb\u003E连载\u003C\u002Fb\u003E笔记,本文由坤博所写,希望对大家有帮助。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E一、知识概要\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E之前消元处理矩阵时,经常发现矩阵中有时会有一行或几行本身就是前面几 行的线性组合情况,这一节我们就从这种线性相关或线性无关的特征入手,介绍 空间中的几个重要的概念:基,维数。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E二、线性无关与线性相关\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E2.1 背景知识\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E首先强调,接下来我们谈论的概念都是基于向量组的,而不是基于矩阵。线 性无关,线性相关是向量组内的关系,基也是一个向量组,不要与矩阵概念混淆。\u003C\u002Fp\u003E\u003Cp\u003E首先从之前学习的 Ax = 0 方程谈起。\u003C\u002Fp\u003E\u003Cp\u003E假设 m*n 的矩阵 A:\u003C\u002Fp\u003E\u003Cimg src=\&v2-eeeb8d131ffce2a019faaadc.jpg\& data-caption=\&\& data-rawwidth=\&1282\& data-rawheight=\&266\&\u003E\u003Cp\u003E显然,n & m,以这样的矩阵 A 构成的方程 Ax = 0,此时未知数x n 的个数比 方程的个数多。未知数一共 n 个,方程一共 m 个。\u003C\u002Fp\u003E\u003Cp\u003E所以此时 A 的零空间中除零向量以外还有其他向量,原因是这样的 A 一定有 自由变量(至少有 n-m 个自由变量),这就造成了零空间中向量的无穷解。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E2.2 线性无关与线性相关\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-0c8e3d7ebcbdcb8c9ab8.jpg\& data-caption=\&\& data-rawwidth=\&1672\& data-rawheight=\&492\&\u003E\u003Cimg src=\&v2-b74c7c06a1cea01bf7fd.jpg\& data-caption=\&\& data-rawwidth=\&1710\& data-rawheight=\&436\&\u003E\u003Cp\u003E举几个例子感受一下上面的概念:\u003C\u002Fp\u003E\u003Cimg src=\&v2-8dee995d0.jpg\& data-caption=\&\& data-rawwidth=\&1678\& data-rawheight=\&1016\&\u003E\u003Cimg src=\&v2-761e0bcf425a45cb82b4.jpg\& data-caption=\&\& data-rawwidth=\&1592\& data-rawheight=\&882\&\u003E\u003Cimg src=\&v2-9e71aef631f6f879cc0b39c96ca66233.jpg\& data-caption=\&\& data-rawwidth=\&1734\& data-rawheight=\&416\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E2.3 零空间的作用\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E根据上面的例题 4,我们再从矩阵的零空间与矩阵列向量角度重新定义 向量组的线性相关\u002F无关。假设现有一 m*n 矩阵 A:\u003C\u002Fp\u003E\u003Cp\u003E·如果 A 各列向量构成的向量组是线性无关的,那么矩阵 A 的零空间中只有零 向量。\u003C\u002Fp\u003E\u003Cp\u003E·如果 A 各列向量构成的向量组是线性相关的,那么矩阵 A 零空间中除零向 量之外还一定有其他向量。\u003C\u002Fp\u003E\u003Cp\u003E很好理解上面零空间角度的定义。因为零空间反映的就是 A 各列向量的线性 组合。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E从秩的角度看来:\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E·线性无关对应向量组构成的矩阵,秩为 n,此时没有自由变量,零空间中 只有零向量存在。\u003C\u002Fp\u003E\u003Cp\u003E·线性相关对应向量组构成的矩阵,秩小于 n,有 n-r 个自由变量,零空间 中有很多向量。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E2.4 生成空间\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-3761acbb4be35a18cbce3f5.jpg\& data-caption=\&\& data-rawwidth=\&1700\& data-rawheight=\&424\&\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E三、基\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cimg src=\&v2-92dda5c93e5c0ed2be3eaa0efd6ae4e9.jpg\& data-caption=\&\& data-rawwidth=\&1624\& data-rawheight=\&642\&\u003E\u003Cimg src=\&v2-8ac880bc53655.jpg\& data-caption=\&\& data-rawwidth=\&1674\& data-rawheight=\&250\&\u003E\u003Cimg src=\&v2-f3c71cec3bfdd3caa561c9.jpg\& data-caption=\&\& data-rawwidth=\&1776\& data-rawheight=\&628\&\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E四.维数\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E上面介绍基的时候提到了“R n 空间的基中向量个数为 n 个。”这个“n”我 们称之为维数。同一个空间内,即使基不同,基向量的个数也必须相等。\u003C\u002Fp\u003E\u003Cp\u003E理解维数也很简单,像我们的三维空间,其基一定是三个三维向量(三个 向量,每个向量有三个分量),四维空间的基也一定是四个四维向量。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E五.总结\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E这一节学习了很多概念问题,我们通过一道例题回顾一下\u003C\u002Fp\u003E\u003Cimg src=\&v2-140c425e4fcf0de2c02e6f3.jpg\& data-caption=\&\& data-rawwidth=\&1524\& data-rawheight=\&1176\&\u003E\u003Cp\u003E(2)找出A列空间的一个基\u003C\u002Fp\u003E\u003Cp\u003E从 A 的结构看来:\u003C\u002Fp\u003E\u003Cimg src=\&v2-63be9a7a9db2.jpg\& data-caption=\&\& data-rawwidth=\&1484\& data-rawheight=\&782\&\u003E\u003Cp\u003E这下我们就将矩阵的秩与列空间的维数联系了起来,而更重要的是,我们知 道了列空间的维数,那么在这个列空间中随便找两个线性无关的向量,它们就可 以构成一组基,这组基就可以生成这个列空间。\u003C\u002Fp\u003E\u003Cp\u003E(3)A对应零空间的维数为多少?\u003C\u002Fp\u003E\u003Cimg src=\&v2-334aef5bcdcdba6cc6319f8.jpg\& data-caption=\&\& data-rawwidth=\&1656\& data-rawheight=\&942\&\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E五.学习感悟\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E这一节内容十分简单,就是几个概念的介绍:线性相关\u002F无关,基,维数。这 一节这几个概念都是用来描述空间的,了解这几个概念之后,我们便将矩阵的秩, 矩阵的自由变量等概念与空间的维数,基,线性相关\u002F无关的判定联系起来。便 于我们接下来对向量空间的研究。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E版权所有、未经同意,禁止转载!!!\u003C\u002Fb\u003E\u003C\u002Fh2\u003E&,&updated&:new Date(&T11:09:06.000Z&),&canComment&:false,&commentPermission&:&review&,&commentCount&:3,&likeCount&:38,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T19:09:06+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-af8a8b0df3dc_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:3,&likesCount&:38},&&:{&title&:&Deep Learning 最优化方法之AdaGrad&,&author&:&qinlibo_nlp&,&content&:&\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E总括\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E首先我们来看一下AdaGrad算法\u003C\u002Fp\u003E\u003Cimg src=\&v2-3548fbec8da27dcef4a6.jpg\& data-caption=\&\& data-rawwidth=\&1214\& data-rawheight=\&630\&\u003E\u003Cp\u003E我们可以看出该优化算法与普通的sgd算法差别就在于标黄的哪部分,采取了累积平方梯度。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E简单来讲,设置全局学习率之后,每次通过,全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E作用\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E那么它起到的作用是什么呢?\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E起到的效果是在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E下面通过例子讲解一下:\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E假设我们现在采用的优化算法是最普通的梯度下降法mini-batch。它的移动方向如下面蓝色所示:\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-02ae7a222465ecc6346e.jpg\& data-caption=\&\& data-rawwidth=\&2164\& data-rawheight=\&386\&\u003E\u003Cp\u003E假设我们现在就只有两个参数w,b,我们从图中可以看到在b方向走的比较陡峭,这影响了优化速度。\u003C\u002Fp\u003E\u003Cp\u003E而我们采取AdaGrad算法之后,我们在算法中使用了累积平方梯度r=:r + g.g。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E从上图可以看出在b方向上的梯度g要大于在w方向上的梯度。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E那么在下次计算更新的时候,r是作为分母出现的,越大的反而更新越小,越小的值反而更新越大,那么后面的更新则会像下面绿色线更新一样,明显就会好于蓝色更新曲线。\u003C\u002Fp\u003E\u003Cimg src=\&v2-1d979af221d94aea5a95.jpg\& data-caption=\&\& data-rawwidth=\&2158\& data-rawheight=\&408\&\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E这就是AdaGrad优化算法的直观好处。\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Cb\u003E\u003Ci\u003E参考:\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003Ca href=\&http:\u002F\u002Fblog.csdn.net\u002Fbvl2Farticle\u002Fdetails\u002F\&\u003EDeep Learning 最优化方法之AdaGrad\u003C\u002Fa\u003E\u003Cbr\u003E吴恩达老师DeepLearning.ai课程slides\u003C\u002Fblockquote\u003E\u003Cp\u003E\u003C\u002Fp\u003E&,&updated&:new Date(&T10:15:00.000Z&),&canComment&:false,&commentPermission&:&review&,&commentCount&:9,&likeCount&:49,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T18:15:00+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\\u002Fv2-1d979af221d94aea5a95_r.png&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:9,&likesCount&:49},&&:{&title&:&Bag-of-words模型入门&,&author&:&qinlibo_nlp&,&content&:&\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E总括\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003EBag-of-words模型是\u003Cb\u003E\u003Ci\u003E信息检索领域常用的文档表示方法\u003C\u002Fi\u003E\u003C\u002Fb\u003E。\u003C\u002Fp\u003E\u003Cp\u003E在信息检索中,BOW模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,\u003Cb\u003E\u003Ci\u003E文档中每个单词的出现都是独立的,不依赖于其它单词是否出现。(是不关顺序的)\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E也就是说,文档中任意一个位置出现的任何单词,都不受该文档语意影响而\u003Cb\u003E\u003Ci\u003E独立选择\u003C\u002Fi\u003E\u003C\u002Fb\u003E的。那么到底是什么意思呢?那么给出具体的例子说明:\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E\u003Ci\u003E例子\u003C\u002Fi\u003E\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003EWikipedia[1]上给出了如下例子:\u003C\u002Fp\u003E\u003Cblockquote\u003E John likes to watch movies. Mary likes too.\u003Cbr\u003E\u003Cbr\u003E
John also likes to watch football games.\u003C\u002Fblockquote\u003E\u003Cp\u003E根据上述两句话中出现的单词, 我们能构建出一个\u003Cb\u003E字典\u003C\u002Fb\u003E (dictionary):\u003C\u002Fp\u003E\u003Cblockquote\u003E{\&John\&: 1, \&likes\&: 2, \&to\&: 3, \&watch\&: 4, \&movies\&: 5, \&also\&: 6, \&football\&: 7, \&games\&: 8, \&Mary\&: 9, \&too\&: 10}\u003C\u002Fblockquote\u003E\u003Cp\u003E该字典中包含10个单词, 每个单词有唯一索引,\u003Ci\u003E\u003Cb\u003E 注意它们的顺序和出现在句子中的顺序没有关联. 根据这个字典, \u003C\u002Fb\u003E\u003C\u002Fi\u003E我们能将上述两句话重新表达为下述两个向量:\u003C\u002Fp\u003E\u003Cblockquote\u003E[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]\u003Cbr\u003E\u003Cbr\u003E
[1, 1, 1, 1, 0, 1, 1, 1, 0, 0]\u003C\u002Fblockquote\u003E\u003Cp\u003E这两个向量共包含10个元素, 其中第i个元素表示字典中第i个单词在句子中出现的次数. 因此BoW模型可认为是一种\u003Ci\u003E\u003Cb\u003E统计直方图\u003C\u002Fb\u003E (histogram)\u003C\u002Fi\u003E. 在文本检索和处理应用中, 可以通过该模型很方便的计算\u003Ci\u003E\u003Cb\u003E词频\u003C\u002Fb\u003E\u003C\u002Fi\u003E.\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E\u003Ci\u003E但是从上面我们也能够看出,在构造文档向量的过程中可以看到,我们并没有表达单词在原来句子中出现的次序\u003C\u002Fi\u003E\u003C\u002Fb\u003E(\u003Ci\u003E这也是bag of words的一个缺点,但是听师兄说,很多情况简单的用bow特征产生的结果就比较好了\u003C\u002Fi\u003E)\u003C\u002Fp\u003E\u003Ch2\u003E\u003Ci\u003E\u003Cb\u003E适用场景\u003C\u002Fb\u003E\u003C\u002Fi\u003E\u003C\u002Fh2\u003E\u003Cp\u003E现在想象在一个巨大的文档集合D,里面一共有M个文档,而文档里面的所有单词提取出来后,一起构成一个包含N个单词的词典,利用Bag-of-words模型,每个文档都可以被表示成为一个N维向量。\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E\u003Cb\u003E变为N维向量之后,很多问题就变得非常好解了,计算机非常擅长于处理数值向量,我们可以通过余弦来求两个文档之间的相似度,也可以将这个向量作为特征向量送入分类器进行主题分类等一系列功能中去。\u003C\u002Fb\u003E\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E\u003Cb\u003E总之通过有效的办法转换为向量之后,后面的一切都变得明朗起来了,因为至少得想办法让计算机理解吧!\u003C\u002Fb\u003E\u003C\u002Fi\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003E\u00

我要回帖

更多关于 机器学习深度学习 的文章

 

随机推荐