Category: Digital Industry and Frontier Technologies
-
Policy Gradient算法原理简介-强化学习技术系列3
前面的相关文章,介绍了基于价值函数的强化学习算法(MDP和Q-Learning),在强化学习中,除了基于值函数的方法,还有一支非常经典的方法,那就是基于策略(policy-based)的方法。这篇文章将向大家介绍相关的算法思想,不正确或需要修正的地方欢迎大家批评指正。 在前面介绍的Q-Learning算法中,会采用一定的随机策略去选择action(epsilon greedy),一开始会让Agent更偏向于探索Explore,并不是哪一个Action带来的Value最大就执行该Action,选择Action时具有一定的随机性,目的是为了覆盖更多的Action,尝试每一种可能性。等训练很多轮以后各种State下的各种Action基本尝试完以后,我们这时候会大幅降低探索的比例,尽量让Agent更偏向于利用Exploit,哪一个Action返回的Value最大,就选择哪一个Action。 在策略梯度中,Agent一般称为Actor,策略pi通常用一个神经网络来表示,一般神经网络的输出为动作的概率(如softmax)。智能体会自动的探索不同的状态和trajectory(通过随机采样的机制进行实现。如一个policy在某种状态下输出action1的概率为60%,输出action2的概率为40%,则智能体自然而然会更多采样到action1,但也会常采样到action2)。policy gradient还有”No more perceptual aliasing”和”Effective in high-dimensional action spaces“这样的优势, 从初始状态出发,到任务的结束,被称为一个完整的episode(剧集)。这样,一个有T个时刻的eposide,Actor不断与环境交互,形成如下的序列τ: 具体的公式推导可以参考引文1,最后的梯度求解公式如下: 关于其公式的推导可以参考引文1,这里就不做赘述。需要说明和强调的是 对代码有几处说明一下:1、loss为负值,求最小,即为正值最大化,2,采用了Mento Carlo采样的思想,每次训练数据基于一个episode,从开始状态直至完成done;3、当前的某个时刻的R为从当前到最后状态r的一个折扣和,具体可以参考链接7中的实现。 实验中用到了GYM,强化学习算法工具包,可以提供强化学习算法的模拟环境,从而为测试和验证强化学习算法提供了方便。 References
-
Q-learning算法基本原理-强化学习技术系列2
在之前的关于马尔可夫决策过程的相关文章中,价值函数一般是某一状态下后续执行行为序列(特定策略)所获得的价值期望。价值函数可以是状态价值函数或动作价值函数,状态价值函数通常用V(s)来表示,而动作价值函数一般用Q(s,a)来表示,其含义为在特定状态下采取动作a来表示后续的价值期望。其表示更加灵活(因为只有状态的价值函数是针对特定策略的,而Q函数多了a这个维度表达能力就更强了),在许多强化学习算法中,特别是基于动作的方法(如Q-learning和Deep Q-Networks),Q函数是中心概念。 下面是Q-learning算法的基本思路解释: Q-learning的Q值更新规则通常使用了贝尔曼方程的近似形式,即将当前状态的Q值更新为当前奖励加上未来最大Q值的折扣后的值。这样可以不断地迭代更新Q值,逐步逼近最优的Q函数,从而学习到最优的策略。Q-learning的算法流程伪代码如下图所示。 对上述公式的解释如下: 一般情况下,可以设置为LMS loss:其中error为下面的表达式。 其中,在实际训练中,为了保持训练网络的稳定性,在训练过程中用到了两个网络,具体的过程可以参考引文3。 Q-learning的深度学习版本为DQN,原理基本差不多,不过Q函数不再以表格来表示,而是用神经网络的结构来表示,这样可以建模状态数很多的情况。 References
-
马尔可夫决策过程相关算法简介-强化学习技术系列1
马尔可夫决策过程是强化学习的基本的算法,一些强化学习的概念知识点都在马尔可夫决策过程中有体现。强化学习是决策智能实现的一大类算法的统称,在游戏,智能辅助决策等场景下也有很多成功的应用。 马尔可夫性是概率论里边的一种特性,描述系统当前的状态概率只与上一个状态有关,而与之前的状态无关(或者说由于上一个状态的存在,之前的状态不会直接影响到当前状态)。用公式表示为: 马尔可夫决策过程是对具有离散状态的环境下的决策行为序列进行优化的建模方法。在马尔可夫决策过程中,问题被建模为一个包含以下要素的数学结构: 我们通常称的策略(policy)指的是当前系统环境处于s的情况下,采取某种行为a去执行,这种根据状态去执行特定的行为称为策略,一个策略下的价值函数(value function)定义为: 其中s为起始状态,pi为策略,因为在状态s下执行策略pi后下一个状态是概率分布,因此上述公式是期望值。价值函数更有价值的公式为下面的贝尔曼方程。其为一种递归定义: 上述公式的最右边可以理解为在当前状态为s的情况下执行策略pi后到达状态s’(满足上述的转移概率)后的价值函数,因为是满足概率分布,所以在不同s‘下求得价值函数的期望值即为结果。最优价值函数即为获取价值最大的策略。这里只关心其贝尔曼方程的表达(因为其方便用程序来实现,后面链接会有相关示例代码去进一步加深理解)。 通过上述的价值函数和最优价值函数的递归定义,我们就可以通过迭代算法去找到最优价值函数,并同时能找到其对应的最优策略。这里介绍两种迭代算法来找出最优的策略,第一种为policy iteration,第二种为value iteration。policy iteration首先通过迭代算法找出最优价值函数,然后通过迭代找出最优策略,而value iteration则是直接在迭代找出最优价值函数的过程中同时将最优策略的逻辑一并耦合在一起。 在这里有一个简单的演示示例,为一行五个格子对应五个状态,可以想象成一个五个格子的魔方,只有一个方块,其余为空格,方块可以向左或向右移动,目标是移动到中间的格子上。我们怎么去通过上述的迭代方法找出最优策略(在每一个状态下执行向左或向右行为为最优?)在这里需要注意几个关键的变量的定义,状态,当前状态价值以及状态转移矩阵。可以参考代码链接及里边的代码注解。 ai/samples/RL/MDP at master · kindlytree/ai (github.com)。 上述MDP的最优策略是在状态当前价值和状态转移矩阵已知的情况下的最优策略求解,实际过程中这些并不是已知的。这里也简要介绍一下MDP在状态转移矩阵未知情况下的求解方法,其也是基于迭代贪婪的思想,从一个随机的策略开始,然后逐步迭代找到更好的策略,在每一个中间策略迭代的开始,要做一些self play,积累一些数据,然后通过value iteration去找到更好的策略,流程伪代码如下所示:
-
einsum is all you need-einsum函数在数值计算中的应用示例说明
在深度学习框架和numpy等数值计算库中,记住不同的矩阵计算,如内积(dot products)、外积(outer products)、矩阵转置(transposes ),矩阵和向量相乘,以及矩阵和矩阵的乘法这些运算的函数名称和参数是容易混淆的一件事情,而爱因斯坦和(einsum)是通过一种领域语言(domain-specific language),用一种优雅的方式去解决这个问题,同时更进一步还可以描述更复杂的tensor的操作。 einsum函数采用如下的格式,einsum(equation,operands),下面为一个模板:result=einsum(“□□,□□□,□□->□□”,arg1,arg2,arg3)。其中□为占位符,表示张量的一个维度,如前面的equation的形式为“□□,□□□,□□->□□”,表示的含义为由三个输入参数,第一个和第三个为矩阵,第二是阶数为3的张量。计算的结果为矩阵。 下面将解释一些使用示例: 其中张量的缩并(tensor contraction)操作是两个多维张量中的分别两个大小相同的维度的内积,具体可以参考链接1中的示例。其中广播操作(broadcast)的实现方式可以参考引文7中的示例说明。 关于示例和相关说明,后面再根据实践会进一步补充更新或进行相关的修正,欢迎读者提出问题意见和建议。 References
-
Hadoop-HDFS简介
Apache hadoop项目开发了一个开源的可信赖,可伸缩的分布式计算软件,Hadoop是一个软件框架,采用简单的编程模型来在计算机集群上分布式的处理大量的数据,它被设计成可以从一台服务器伸缩到几千台机器,该开发框架可以在应用层检测和处理错误,从而在集群上能够提供高可用的服务。大数据的应用场景也有很多,大数据处理技术的集群环境可以用云计算平台搭建,大数据平台也可以作为云计算中的PaaS层提供给有大数据分析场景需求的用户使用。因此大数据技术一般也作为云计算技术专业的专业核心课程之一。后面有机会再和云平台结合具体详细介绍其搭建和使用。这里先做一下简要介绍。 Hadoop的核心组件包括:1、Hadoop Common,支持Hadoop其他模块的通用的一些工具库;2、HDFS(Hadoop Distributed File System)为应用程序提供高吞吐量的分布式文件系统;3、Hadoop YARN,为Hadoop系统中资源管理和任务调度(job scheduling)的框架;4、Hadoop MapReduce:是一个基于YARN系统的大数据集并行处理编程模型;5、Hadoop Ozone。本篇文章主要介绍一下其分布式文件系统的大体思想。 Hadoop HDFS(分布式文件系统),主节点进程(Namenode,存储元数据,文件的目录结构,不同节点之间的负载容量的计算),子节点(Datanode,多个,客户数据存储的地方),如图所示为一个客户端在上传文件时(下方的橙色的Client),将两个文件块上传到两个节点中去,然后文件块再创建对应的副本。HDFS和Ceph都属于大容量分布式存储,但是其实现思想方法和优缺点各有不同,怎么选择和结合使用要到后面有机会再详细介绍。 Hadoop中块副本(Block Replication)机制的如下图所示。为文件名,副本数量以及对应的块id号等信息。一般情况下默认副本数为3。 References
-
关于ML/DL的一些基本问题的汇总及其解答-part2
机器学习/深度学习(ML/DL)是当前人工智能的核心基础课程和知识点,只有在充分理解了这些核心基础的内容后才能做好更多相关的研究和工程研发,这里收集汇总了之前回答一些基础的相关问题,以备后续查阅。 准备从1、通用的基本问题,2、回归和分类的基本问题,3、Cost Function(objective fuction,loss,error surface),4、Quality metric,5、Neural Network,6、CNN,7、RNN,8、Transformer,9、Reinforcement Learning等等方面进行汇总,后面欠缺的部分后面将要去进一步更新。 这是第二部分的内容。 References 六、CNN 七、RNN 八、Transformer 九、Reinforcement Learning 十、Feature Engineering(Data augumentation) 十一、Clustering Algorithm 十二、Trees 十三、Optimization Algorithms
-
关于ML/DL的一些基本问题的汇总及其解答-part1
机器学习/深度学习(ML/DL)是当前人工智能的核心基础课程和知识点,只有在充分理解了这些核心基础的内容后才能做好更多相关的研究和工程研发,这里收集汇总了之前回答一些基础的相关问题,以备后续查阅。 准备从1、通用的基本问题,2、回归和分类的基本问题,3、Cost Function(objective fuction,loss,error surface),4、Quality metric,5、Neural Network,6、CNN,7,RNN,8,Transformer,9,Reinforcement Learning等等方面进行汇总,后面欠缺的部分后面将要去进一步更新。 这是第一部分的内容。 References 一、通用的基本问题 二、回归和分类的基本问题 三、Cost Function(objective fuction,loss,error surface) 四、Quality metric 五、Neural Network
-
人机交互与人人交互简介
交互(interaction,dialog)是两个系统之间信息交流的方式,人机交互(human computer interaction)指的是人和计算机之间信息交流沟通的过程和方式,人和计算机都有信息接收,信息加工处理和信息发送的能力,不过两个系统的工作原理不同(经典计算机是人类发明,其工作原理是比较清晰的,但人类的智能加工还有很多神秘待挖掘)。人人交互(human human interaction)指的是人们之间的交互方式,如日常的口语对话(natural dialog),书信,肢体语言等。由于其过程自然流畅,一般也称为自然交互。随着计算机软硬件技术的不断进步,人机交互也越来越向着更加自然高效的交互方式去发展。当然人人交互的复杂和高效特性是那么的独特,比如在一个会议或一群人的交流互动过程中,群体的交互过程的建模和分析就比较复杂(如社交网络也可以理解为一种非即时的群体人人交互,其通过信息技术得以实现物理距离不受限的群体人人交互)。而现阶段一般的人机交互主要还是研究的一对一的人和机器之间的高效交互。人机交互基本上是没有太大二义性的,而人人交互二义性就比较多,人的认知目标也不尽相同,甚至相互的理解程度也是在一定范围和程度内(人人交互也可以说是一种信息的模糊交互过程)。 自计算机发明以来,从早期的纸带输入数据和计算指令,到键盘鼠标以及麦克风等等,新的外围设备的发明不断促进了人和机器之间信息交互的便捷性。人机交互也早已经是计算机应用里边的一个大的研究方向。其研究范畴也挺大,有硬件的外围设备,如鼠标,键盘,智能笔等的发明,促进了计算机使用的便捷性并大大普及了计算机在更广的人群里的使用。计算机可视化技术的发展,使得计算机从早期的DOS系统(Command Line Interface, CLI)过渡到(Graphical User Interface,GUI),通过鼠标和窗口进行交互更加快捷高效,这些交互技术的进步不断促进着计算机的进一步普及。随着人工智能技术的引进,交互也会引入模糊性,如智能技术的结果的精确性就会带来机器理解的模糊性。这类技术通常也称为Intelligent User Interface(IUI,智能用户界面)。 新的智能时代,智能设备的多样性也给交互带来了更多的应用场景和想象的空间,智能眼镜,智能投影仪摄像头等等,一方面提供了更加便捷普适场景的交互,另一方面也延申了人类的感知和认知和想象的能力。如基于虚拟现实技术的交互可视化,可以通过手势等方便和系统进行交互,并及时反馈交互的结果,如可视化技术随着交互手势的输入来动态响应其用户的交互意图,从而展示想要看到的不同视角,不同尺度比例的可视化内容。智能机器人的出现(如具身机器人),人和机器的交互可以逐渐模拟人和人之间的交互过程,如自然的对话,肢体表达等等。随着更多的技术进步,如脑机接口,多模态大模型等技术的发展,人机交互的应用范围和场景也会进一步扩大,nothing is impossible, nothing is beyond imagination。
-
UE学习笔记1-安装及基本使用
UE是虚拟现实相关技术的很有影响力的引擎,这里将边学习边做一下记录备忘,以备后续查阅复习。 1、UE的下载安装,下载链接请参考引文1,下载安装文件后,执行epic games launcher启动程序,注册一个账号后就可以进入启动epic games的程序进入主窗口界面了。登录后,移动至“虚幻引擎”选项卡,并点击“安装”按钮,下载最新版本。下面将介绍一下UE使用的基础内容,主要是窗口中的一些重要的子窗口元素介绍。 2、关卡编辑器界面:首先新建一个项目,选择第三人称模板(Third Person Template),项目设置选择蓝图,质量预设选择最大,以及填写项目名称后会进入关卡编辑器界面。 3、放置actor面板:在下图的红色区域点击弹出drop list对话框并选择“放置Actor面板”菜单项,会在程序窗口的左边弹出放置Actor面板,然后在弹出的面板中选择形状,拖入一个“立方体”放入视口中,并通过配置来设置立方体的大小。如下图所示。 4、内容浏览器子窗口面板:用来管理各类资源,如果在创建项目时勾选了初学者内容包,那么在内容浏览器中可以看到“StarterContent”在我们的项目文件中被创建。如下图所示。 5、大纲子窗口面板:放入到视口中的元素,都会一一列到大纲中,如下图中的右边所示。 6、细节子窗口面板:当选中任一物体后,其相关细节设置就会展示在细节面板中。我们可以在细节面板中对选中的物体设置坐标、材质、碰撞等属性。 上述对UE的各个关键子窗口做了介绍,下面以具体的一个简单的设计实操示例来进行性说明。 在内容浏览器子窗口面板的的“Content”(“内容”)目录下,右击鼠标,在弹出的对话框中选择“创建文件夹”,将创建的文件夹命名为“Level”,双击“Level”,然后在内容浏览器空白处右键,选择“新建关卡”。并进行重命名为“Level_Demo”,双击“Level_Demo” ,此时在视口中一片漆黑,什么都看不到。我们需要在关卡内放入Actor来构建世界,我们可以在菜单栏 – 窗口中找到环境光照混合器,点击里面的5个按钮,可以将其快速添加到场景中。 References
-
量子计算简要介绍
量子计算是当前前言的科技创新研发领域,相关的计算概念和理论和传统的计算机差异较大,理解起来也挺有难度。今天有机会了解了一下量子计算的最基础的基础部分,加以记录,后面有机会学习更深入的部分的时候也可以回过头来看一些基础的内容,也是作为知识储备能更快的学习后面的内容。技术发展日新月异,终身学习既是时代的需求,也是自我不断成长和进步的要求。 一、布洛赫球 (Bloch sphere)。和经典计算机的比特位不同,量子计算机的信息表示方式为量子位(quantum bit,qubit),其是0和1的叠加态(具体的表示方式可以参考引文),用公式来理解为其是0和1两个状态的线性组合,需要注意的是,这里的线性因子是复数(两个复数因子有归一化约束,即其模的平方和为1)。 经过欧拉方程和global phase等公式和概念的引入和推导,最后得出如下的公式 用布洛赫球 (Bloch sphere)表示为如下的示意结果。 二、单量子比特上的量子操作,量子操作 (Quantum operations)将量子系统的状态转换成一个新的状态,我们通常也称它们为量子门 (Qubit gates),可以用泡利矩阵的形式来表达,双量子态和多量子态的内容后面有机会再详细介绍,具体也可以参考引文1中的相关内容。上面的两点内容只从数学上进行了阐述,其实际的计算和量子力学等关键的物理背景知识是息息相关的,这方面希望后续有机会要多多了解一下。量子比特的叠加态(Superposition State)是量子计算中一个重要的概念,它允许量子比特同时处于多个状态的线性组合。这使得量子计算在某些情况下能够处理并行计算,与经典计算有着显著的区别。(和传统计算机基于经典比特和晶体管数字逻辑电路属于不同的计算范式) 三、量子计算机的物理实现也有多种,有基于超导量子的实现,也有基于光电子的量子计算机的实现,具体实现方式根据技术差异可能比较大。 四、量子算法有对应的软件模拟,如Qiskit是基于python的面向量子计算的开源软件开发框架,由IBM量子计算团队开发和维护,可以构建、 模拟、执行量子电路。 五、量子力学和信息科技的融合发展出现了量子计算,量子通信和量子精密测量等先进技术,也是当前发展的前沿技术,后面由机会也可以多了解一下。 今天是交通大学128周年校庆,我和交大有挺深的渊源,在这里祝贺交大128岁生日快乐,祝愿交大在未来的科教兴国的征程上硕果累累,创造更大的辉煌! References