机器学习小白入门指引.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机器学习小白入门指引

机器学习小白入门指引如何开始学习机器学习?面临的最大困难就是机器学习背后的数学原理。必须知道的第一个事情是同一个问题会有不同的解决方案。同一个问题可能会有3个解决方案。本文将介绍的第一个解决方案是遗传编程和进化算法。0.神经网络的基础神经网络不是很难理解。对新手来说比较难描述。因为每个人都在使用数学来解释神经网络,那我想在这里会用不同的方法来描述它。下面我们谈论一个简单的神经网络,它的结构包括三个不同的“类别”:输入层,隐藏层和输出层。图1 神经网络基本架构输入层通常代表传感器,其中输入数组的每个值的范围是从0.0到1.0。输出层代表对问题的解,取值可能为真假二值,也可能是位置矢量(例如游戏中,操作对象的x/y/z坐标值)。神经网络可以用来拟合复杂函数,已经复杂的分类决策问题(达到Bayesian解决方案的限制,但以后会出现)。神经网络是无知的,他们只能理解从0.0到1.0的值,这意味着我们必须为其编写适配器,以便它能够理解它的含义,适配器在现实世界中通常称为“策略”,它除了将值转换为0和1之外,不会做其他事情。例如,当我们想要在乒乓球游戏中预测桨的移动位置时,我们可以使用这样的代码:?let input = [ 0, 0, 0 ]; // x,y,zinput[0] = entity.position.x / screen.width;input[1] = entity.position.y / screen.height;input[2] = 0; // we dont have a z position, have we?let answer = neural_pute(input);if (answer[0] 0.5) {??? entity.moveUpwards();} else {??? entity.moveDownwards();}现在我们知道一个神经网络可以计算输入,输出是/否离散结果,或者连续值。神经网络每层包含多个神经元。简单的前馈网络以每个神经元与前一层中的每个神经元(从左到右走)相连接的方式建立。?这些连接使用用来描述数据流的流向,每个连接线对应一个权重。这里的重要部分是输入神经元没有连接到上一层,因此compute( )函数必须对输入神经元做出反馈,根据输入数组的值直接获得结果。所谓的激活函数,是用来描述前后两层中,互相联系的神经元的转换关系。这里激活函数的概念有点模糊,因为每个人都有自己的见解。当然,你需要知道的是,它只是一个简单的函数,其响应形式如下:图2激活函数Sigmoid的响应const _sigmoid = function(value) {??? return (1 / (1 + Math.exp((-1 * value) / 1)));};总之,你只需要知道激活函数是模拟神经元如何工作的一种方法。激活函数在现实中只是取一个值并将其转换为另一个值。它的行为方式类似于动画世界中的每一帧之间的转换。快速进步首先意味着神经元可以快速学习,缓慢步进意味着神经元过度拟合收敛更慢。过度拟合和讨论是一个更复杂的话题,但我直截了当地忽略它,以节省时间和混乱。1.遗传编程和进化遗传编程的核心思想是使用基因组的形式来表示网络结构。遗传编程的巨大优势是,当遗传编程与进化算法相结合时,它可以非常快地获得很好的网络结构。一个基本的进化算法总是包含三个不同的周期:训练、评价、繁殖,重复以上过程。图3 进化算法过程进化算法的执行过程如下:STEP1 种群初始化:对种群的个体赋随机值,这样您就可以快速获得一个结果。当然,使用随机值来求最优解是有点漫无目的。STEP2 适应度评价:适应度是评估循环过程中每个个体过程值,用来评估个体接近最优解的程度。例如,在超级马里奥游戏中,与左的距离、分数、杀敌数等可以用作适应度。STEP3 个体选择,种群中适应度高的个体被选入交配池,获得与其他适应度高的个体交叉繁殖的机会,从而产生新的个体,加入子代种群。交叉算子的操作类似于人类繁殖的过程,父、母两条染色体相互交换基因片段,当然“儿子”个体会更像父亲,而“女儿”个体更像母亲。变异算子的主要作用是保持种群的多样性,防止种群陷入局部最优,所以其一般被设计为一种随机变换。图4 个体交叉示意图STEP4 判断是否达到最大迭代次数,若否,则跳至STEP2。交叉算法通常在两个基因的截断点处进行交换,子个体各获得一部分,如女儿获得父母基因的比例分别为70% / 30%,儿子获得父母基因的比例分别是30% /70%。let dna_split = (Math.random() * mum_genome.length) | 0;let daughter? = new Genome();let son?????? = new Genome();for

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档