对领域的认知比会写代码更重要
对领域的认知比会写代码更重要
昨天看了一篇文章,觉得对我非常有启发,所以想做个转发分享出来。
很少有人从头开始构建代码
在大学,他们会教你如何编写一个400行的程序,从头到尾地解决一个问题。你手头有一个白板,你需要展示一些花哨的算法,以证明你具有可以找到走出迷宫的知识和能力。最后,你找到了完美解决方案去解决那个超简单的问题。这看起来很像真实的世界,对吧?但现实并非如此。在现实世界中,你有一个几十万行的代码,当你试图弄清楚你的同事在写这部分代码时到底在抽什么风,你需要在文档和更了解代码的人之间来回切换。当一周快结束时,你写了10行代码来修复某个bug,然后循环往复,直到人们找到你,向你解释他当时为什么要这样写。
专业的软件开发人员在团队中工作,一般只处理大型软件代码库的一小部分,并且通常只是修复一些东西,而不是从头开始构建。它并不像培训机构所描述的那样迷人,而且修复所付出的开销要比写代码多得多。
对领域的认知比会写代码更重要
我惊讶地发现,当你理解了它是如何(更重要的是为什么)工作,以及工作的基本原理后,编写代码会变得容易得多。
在构建银行移动端APP的时候,你可以更好地理解交易是如何运 ...
《Easy RL:强化学习教程》读书笔记05
DDPG的改进
虽然 DDPG 有时表现很好,但它对于超参数和其他类型的调整方面经常很敏感。DDPG 常见的问题是已经学习好的 Q 函数开始显著地高估 Q 值,然后导致策略被破坏,因为它利用了 Q 函数中的误差 。我们可以使用实际的 Q 值与 Q 网络输出的 Q 值进行对比。实际的 Q 值可以用蒙特卡洛来算。根据当前的策略采样 1000 条轨迹,得到 G 后取平均值,进而得到实际的 Q 值。
双延迟深度确定性策略梯度(twin delayed DDPG, TD3) 通过引入 3 个关键技巧来解决这个问题。
截断的双 Q 学习(clipped dobule Q-learning)。 TD3 学习两个 Q 函数(因此名字中有“twin”)。TD3 通过最小化均方差来同时学习两个 Q 函数。两个 Q 函数都使用一个目标。
延迟的策略更新(delayed policy updates) 。相关实验结果表明,同步训练动作网络和评价网络,却不使用目标网络,会导致训练过程不稳定;但是仅固定动作网络时,评价网络往往能够收敛到正确的结果。因此 TD3 算法以较低的频率更新动作网络,以较高的频率 ...
《Easy RL:强化学习教程》读书笔记04
DQN基本概念
Deep Q-Network是基于深度学习的Q-learning算法,其结合了 Value Function Approximation(价值函数近似)与神经网络技术,并采用了目标网络(Target Network)和经验回放(Experience Replay)的方法进行网络的训练。
状态价值函数
在基于价值的算法中,学到的不是策略,而是critic,即进行策略评估,衡量状态价值函数有两种不同的方法:基于蒙特卡洛的方法和基于时序差分的方法。基于蒙特卡洛的方法就是通过让actor与environment做交互,来让critic评价,其评价主要根据累积奖励值来的。第二种是时序差分的方法,即基于时序差分的方法。在基于蒙特卡洛的方法中,每次我们都要计算累积奖励,也就是从某一个状态一直到游戏结束的时候,得到的所有奖励的总和。但这样很受限制,得游戏结束才能更新网络,而时序差分是让前后两个状态价值函数值V(s_t)和V(s_t+1)的损失和r_t接近。
动作价值函数
这种critic称为Q函数,其输入的是一个state-action pair,输出是累积奖励的期望值。我们可以估计某 ...
《Easy RL:强化学习教程》读书笔记03
策略梯度算法
在强化学习中,我们唯一需要做的就是调整演员里面的策略,使得演员可以得到最大的奖励。演员里面的策略决定了演员的动作,即给定一个输入,它会输出演员现在应该要执行的动作。策略一般记作π。假设我们使用深度学习来做强化学习,策略就是一个网络。网络里面有一些参数,我们用 θ来代表π的参数。网络的输入是智能体看到的东西,如果让智能体玩视频游戏,智能体看到的东西就是游戏的画面。智能体看到的东西会影响我们训练的效果。例如,在玩游戏的时候, 也许我们觉得游戏的画面是前后相关的,所以应该让策略去看从游戏开始到当前这个时间点之间所有画面的总和。因此我们可能会觉得要用到循环神经网络(recurrent neural network,RNN)来处理它,不过这样会比较难处理。我们可以用向量或矩阵来表示智能体的观测,并将观测输入策略网络,策略网络就会输出智能体要采取的动作。因为我们要让奖励越大越好,所以可以使用++梯度上升(gradient ascent)来最大化期望奖励。一般策略梯度(policy gradient,PG)++采样的数据只会用一次。我们采样这些数据,然后用这些数据更新参数,再丢掉这些数 ...
计算机架构设计的8个伟大思想
面向摩尔定律设计
计算机设计师的一个永恒的问题就是摩尔定律(Moore’s law)。摩尔定律指出,集成电路上可容纳的晶体管数每18~24个月翻一番。摩尔定律是Intel公司创始人之一戈登 摩尔在1965年对集成电路集成度做出的预测。由于计算机设计通常需要几年时间,因此项目结束时芯片的集成度较之项目开始时,很容易翻一番甚至翻两番。像双向飞碟射击运动员一样,计算机体系结构设计师应当预测设计完成时的工艺和技术水平,而不是设计开始时的工艺。
半导体行业大致按照摩尔定律发展了半个多世纪,对二十世纪后半叶的世界经济增长做出了贡献,并驱动了一系列科技创新、社会改革、生产效率的提高和经济增长。个人电脑、因特网、智能手机等技术改善和创新都离不开摩尔定律的延续。如今单个处理器已经很难适应摩尔定律了(主要包括随着更多晶体管被装入芯片当中,相应会出现电子能量外泄和热量散发的现象),但云计算兴起,算力网络起飞,在某种程度延续了摩尔定律。
使用抽象简化设计
计算机架构师和程序员都必须发明技术来提高自己的生产力,否则设计时间会随着摩尔定律的资源增长而显着延长。提高硬件和软件生产率的主要技术之一是使用++抽象( ...
《Easy RL:强化学习教程》读书笔记02
策略迭代
策略迭代由两个步骤组成:策略评估和策略改进(policy improvement)。第一个步骤是策略评估,当前我们在优化策略 \piπ,在优化过程中得到一个最新的策略。我们先保证这个策略不变,然后估计它的价值,即给定当前的策略函数来估计状态价值函数。 第二个步骤是策略改进,得到 状态价值函数后,我们可以进一步推算出它的 Q 函数。得到 Q 函数后,我们直接对 Q 函数进行最大化,通过在 Q 函数做一个贪心的搜索来进一步改进策略。这两个步骤一直在迭代进行。
价值迭代
价值迭代做的工作类似于价值的反向传播,每次迭代做一步传播,所以中间过程的策略和价值函数 是没有意义的。而策略迭代的每一次迭代的结果都是有意义的,都是一个完整的策略。如图所示为一个可视化的求最短路径的过程,在一个网格世界中,我们设定了一个终点,也就是左上角的点。不管我们在哪一个位置开始,我们都希望能够到达终点(实际上这个终点在迭代过程中是不必要的,只是为了更好地演示)。价值迭代的迭代过程像是一个从某一个状态(这里是我们的终点)反向传播到其他各个状态的过程,因为每次迭代只能影响到与之直接相关的状态。
策略迭代和价值迭 ...
《Easy RL:强化学习教程》读书笔记01
强化学习概述
强化学习由智能体(agent)和环境(environment)组成,智能体得到环境中的状态(state)后,将根据状态输出一个动作(action),这个动作也是决策(decision),这个动作会在环境中被执行后输出状态和奖励(reward),智能体的目标是最大化所获得的奖励。
强化学习和监督学习的区别
1、强化学习输入的样本是序列数据,监督学习的样本的独立同分布的。
2、强化学习只能通过不停地尝试去做出最有利的动作,而监督学习是有人类知识引导的。
3、探索(exploration)和利用(exploitation)是强化学习里面非常核心的问题,探索是尝试新动作以获得更高的奖励,但有一定的风险,而利用是采取已知的可获最大奖励的动作,所以需要在探索和利用间进行权衡,这是监督学习中没有的。
4、强化学习中的奖励一般是延迟的,而监督学习是即时的监督。
标准强化学习和深度强化学习的区别
标准强化学习需要设计特征、进行特征工程并设计价值函数,而深度强化学习是一个端到端的训练过程,可直接通过神经网络来拟合价值函数或策略网络。
状态和观测的区别
状态是对世界的完整描述,不会隐藏世界的 ...
机器学习算法备忘单
机器学习(ML)是人工智能(AI)和计算机科学的一个子领域,主要是利用数据和算法来模仿人的学习方式,逐步提高其准确性。使用这个树状图作为指南,以确定使用哪种ML算法来解决你的AI问题。
图片来源:LatinX 在 AI™ 中的机器学习算法备忘单
如果你想知道在不同的应用程序中使用哪些机器学习算法,或者你是一个开发者,同时为你试图解决的问题寻找一种方法,请继续阅读下文,并以这些步骤作为指导。
无监督学习使用未标记的信息数据,这样机器应该在没有指导的情况下根据模式、相似性和差异来工作。
另一方面,有监督学习有一个 “老师” 存在,他负责通过标记数据来训练机器工作。接下来,机器会收到一些示例,使其能够产生正确的结果。
但是对于这些类型的学习,有一种混合的方法,这种半监督学习适用于有标签和无标签的数据。这种方法使用一个极小的标记数据集来训练和标记其余数据,并进行相应的预测,最后给出问题的解决方案。
首先,你需要知道你所处理的维数,它意味着你的问题中输入的数量(也被称为特征)。如果你正在处理一个大数据集或许多特征,你可以选择降维算法。
无监督学习:降维
数据集合中的大量维度可能会对 ...
大学本科经验分享
个人档案
打卡笔记六 “不” 走
六边形战士,人生“不”设限
大学以来,我除了做好专业学习和科研竞赛外,还积极参与到社会实践和学生工作中。身处大学这样一个充满机遇的平台,我们不能让自己仅仅局限在学习能力和科研能力的提高上。参与社会实践、学生工作能够认识到比自己优秀的同学,与优秀的同学为伍,自己也会变得更优秀。
生活“不”abandon,英语学习很重要
在高校夏令营或预推免中,大部分双一流高校都要求通过六级,有些高校还会对六级成绩进行规定。如果没有过六级,很多高校的简历初筛都过不了。在保研面试中,也会有英文问答、英文自我介绍环节,这一部分的分数通常占比15%-40%。你的六级成绩越高分,在保研面试中就有越大的优势。
勇者“不”退缩,不服就比比
我一直都鼓励我的师弟师妹们++多参加比赛,因为比赛的过程中,我们会对专业知识有更深刻的理解,从而更快掌握专业知识。++对于工科生来说,可参加的比赛是相当多的,数学建模、数学竞赛、程序设计大赛、计算机设计大赛、互联网+、挑战杯等都值得参加。
在大一,我跟很多同学一样,会因为害怕当“分母”而不敢参赛。后来,我 ...