Category: Digital Industry and Frontier Technologies

  • P2P网络技术简要介绍

    P2P网络是一种网络技术,有很多应用场景都可以用得到,特别是当前流行的区块链技术中P2P技术将作为主要核心的技术支撑,这里先简要对P2P技术做一下相关说明。如有不正确或补充的地方欢迎读者联系指出。 P2P网络中每一台机器即可以用来做客户端,也可以用来做服务器,其中的任何两个节点不需要服务器就可以直接进行通信从而共享资源交换信息。P2P网络是去中心化的,因此也意味着没有一个中央的授权节点来控制和管理资源。 P2P网络可以有多种应用存在形式,这里几个较有影响力的P2P应用,如用于文件分享的BitTorrent, 区块链网络应用比特币(bitcoin等),去中心化的计算标准Matrix,P2P网络技术还可以用于物联网平台。这些系统虽然也都有一些挑战和平衡综合考虑,但是都是在这些应用场景下要优于传统的客户端服务器的网络模式。 libp2p是一个比较健壮的面向P2P应用的开发库,用其开发P2P的应用有如下的几个优势:1、模块化,libp2p基于组件构建,可以面向不同的应用场景去组合不同的组件去构建应用;2、可扩展的网络协议配置,libp2p支持多种传输协议; 3、提供了多种语言实现的网络发现,数据存储和检索模式的代码,方便不同的编程习惯的程序员去构建;4,支持NAT穿越,NAT穿越,以实现不同内网的机器通信,关于NAT Traversal的原理,可以参考引文7;更多的优势可以参考引文8中的说明文字。 这篇短文主要介绍了P2P技术的应用,关键的技术,以及支持P2P应用开发库libp2p。P2P网络技术可以在云平台中进行部署,如Chainmaker就可以在云平台中进行部署。后续有机会将向大家详细介绍具体技术开发的应用细节。 References

  • 区块链技术简介

    区块链技术是当前较为重要且可以在生产环境中使用的关键信息技术之一,为可信存储和计算提供了技术保障,这里对区块链技术做一下简要的介绍,欢迎读者批评指正和补充。后续将介绍更多的相关技术和应用的内容。 区块链是一个基于点对点(peer-to-peer network,一种计算机网络技术)的记账系统,允许节点之间直接进行交易而不需要中心授权节点的介入。点对点网络是一个完全的去中心化的。为了满足去中心化的要求,每一个节点都需要一个记账的拷贝。拷贝可以是一个完整的拷贝,或者对于在网络上能够正常工作和保持连接的一个最小拷贝。 为了保证交易的一致性,一致性的方法如 Proof-of-Work, Proof-of-Stake被采用。在高级的密码学算法的辅助下,每一个交易都是安全的。 区块链的用处挺多,可以用在医疗卫生,供应链金融、碳交易、食品追溯等一系列关乎国计民生的重大领域。这里列举两个具体的例子:1、比如医疗卫生部门可以将病人的诊疗数据如检查结果药方等存放到区块链上,当然这些数据也可以贡献给医疗卫生部门做为数据提供。当然也可以解决假药问题,同时帮助病人和制药公司;2、食品追溯,包括食品的种子,生长过程管理数据(施肥撒药等,温度等天气数据,土壤等水土数据),以及保鲜物流,储存条件等信息。碳交易即把二氧化碳排放权作为一种商品,从而形成了二氧化碳排放权的交易,简称碳交易,碳交易有利于减少二氧化碳的排放,有利于环境保护和重构。 区块链技术所用到的底层信息技术有P2P网络,加密算法等,ChainMaker是由几个知名的大公司合作研发的区块链开源底层软件平台,具体介绍可以参考引文链接。区块链技术本身是一种分布式系统,可以和云平台相结合进行生产环境中部署,如引文7中就有基于公有云平台的区块链产品。 References

  • 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。