强化学习(reinforcement learning)有什么好的开源项目、网站、文章推荐一下?
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
我制作过很多机器学习的短视频和教程, 也获得了很多支持.
现在正在逐步制作强化学习的部分, 欢迎加入学习.
这些教程相信都是比较全面的概括了各种强化学习方法, 从基础的到最新最高级的都囊括其中.
教程每个都很短, 精辟, 总结性高, 是以代码和例子为基础, 手把手教你写出会学习的机器人.
所以我先在这里列一下自己教程的学习目录.
- 强化学习方法和各种其他机器学习方法的动画短片介绍 ( 莫烦 Python )
- 无敌简单的强化学习小例子
- Q-learning
- Sarsa
- Sarsa(lambda)
- Deep Q Network (DQN)
- 使用 OpenAI gym 环境库
- Double DQN
- Prioritized Experience Replay (DQN)
- Dueling DQN
- Policy Gradients
- Actor-Critic
- Deep Deterministic Policy Gradient (DDPG)
- Asynchronous Advantage Actor-Critic (A3C)
- Model-based RL: 还在完善中.
如果你还想学习其他的机器学习教程, 并想迅速实现他们, 欢迎去我的网页看看, 里面有像 Tensorflow 等教程, 教你如何搭建神经网络等等. 莫烦 Python
安利一下,OpenAI出品的强化学习 (RL) 入门教程,叫Spinning Up。
OpenAI说,完全没有机器学习基础的人类,也可以迅速上手强化学习。
有概念,有一系列关键算法的实现代码,有习题,还有详细的论文阅读清单。每一步清晰简明,全程站在初学者视角。
划个重点:这里的代码实现,和OpenAI Gym里的各种环境都兼容。
教程包含5个重要部分。
分为三小步:
一是了解基础概念,即知道RL能用来做什么,理解概念和术语。
二是了解算法分为哪些种类。
三是了解策略优化。
Part 1: Key Concepts in RL(此部分可选择性忽略)
如何让自己习惯RL研究人员的新设定?
第一,知道哪些数学知识深度学习知识,是需要简要了解的。第二,在实践中学习,写最最最简单的实现 (后面有代码) ,注重理解。第三,有了小小的经验之后,试着开发自己的研究项目。这是入门之后的事了。
第四之后,有些遥远,暂时不详述了。
论文列表非常详细,分为12个小类别,每个类别下面,有2-8篇论文。
团队说,列表比全面还全面,足够给一个想做RL研究的人类铺路了。
Key Papers in Deep RLGitHub上面有个叫spinningup的项目,包含了强化学习能用到的各种关键算法:
VPG、TRPO、PPO、DDPG、TD3和SAC等。
团队说,这里的代码都是为初学者定制,很短很好学。比起模块化,Spinning Up以清晰为重,代码都注释过了,可以很清楚得看出每一步都在做什么,并且有背景材料可以辅助理解。
目标就是用最简约的实现,来演示一条理论是如何变成代码的,而抽象层和混淆层(Layers of Abstraction and Obfuscation) 这些东西,都省去了。
openai/spinningup这里有两个习题集。
一是关于实现的基础,二是关于算法失效模式。
后面还有附加题 (Challenges) ,是要从零开始自己写代码实现,相对艰辛。
Exercises - Spinning Up documentation团队说,要感受强化学习是怎样运作的,最好的方式是跑一跑。
在Spinning Up里面就很容易,只要用类似这样的代码:
1 python -m spinup.run ppo --env CartPole-v1 --exp_name hello_world
训练结束的时候,你会看到说明,然后可以按照里面讲的方法来观察数据,也可以观察训练完成的智能体的视频。
另外,Spinning Up里的实现,和一系列Gym环境都兼容:Classic Control,Box2D,MUJOCO等等。
试试看吧:
教程入口:
GitHub传送门:
― 完 ―
量子位 ・ QbitAI?'?' ? 追踪AI技术和产品新动态
量子位欢迎大家关注我们,以及订阅我们的知乎专栏
强化学习是近年来机器学习领域的研究热点,在游戏操作、围棋对弈、多智能体控制等场景取得了不少令人瞩目的进展。在逐步挑战这些难题的同时,训练强化学习模型的计算力要求也在大幅度提升。虽然显卡设备经历了K40/P40/V100等提升,CPU主频也在不断提升,但是大规模的并行化仍然是提供巨大算力的主要手段。在并行化这个问题上,python由于其全局锁的存在使得自身的多线程在计算密集型任务上显得鸡肋。多进程虽然可以绕开全局锁问题,但是进程间通讯会提升开发复杂度,并且性能提升空间受限于机器的CPU数量。
这里自我安利一下百度的Parl强化学习框架。
项目地址:
PaddlePaddle/PARLPARL1.1
PARL是一款基于百度PaddlePaddle打造的深度强化学习框架,继1.0版本开源了NeurIPS 2018假肢挑战赛冠军训练代码以及主流强化学习模型后,我们发布了聚焦于并行的1.1版本。PARL1.1新增支持高质量的并行算法,包括IMPALA、GA3C、A2C,并提供了高性能的并行开发接口。以通过PARL实现的IMPALA算法的评估结果为例,在雅达利这个经典评测环境中 ,pong 游戏最快可在7分钟内达到20分,breakout游戏在25分钟达到400分(1个P40GPU +32CPU)。
并行修饰符
PARL1.1通过一个简单的修饰符(@parl.remote_class)即可实现并行化。数据预处理以及simulator仿真等计算密集型的任务经过这个修饰符之后,会自动部署到用户指定的计算资源上运行,不再占用主线程的计算资源。下面我们先通过一个简单的Hello World程序来了解这种设计的简单易用之处。
#============Agent.py=================@parl.remote_class class Agent(object): def say_hello(self): print("Hello World!") def sum(self, a, b): return a+b #============Server.py=================remote_manager=parl.RemoteManager() agent=remote_manager.get_remote() agent.say_hello() ans=agent.sum(1,5) #在远端执行,不占用当前线程计算资源。
并行化改造:单看Agent的定义是一个很普通的python类定义,但是通过@parl.remote_class修饰之后,Agent就完成了并行化的改造。
Server端获取计算资源:通过把Agent类部署到别的机器上或者CPU集群中,Server这端通过RemoteManager就可以获取到远端的Agent类,此后在Server这边可以通过获取到的Agent执行任何函数。
远端计算资源调用:但与没有修饰符的Agent不同的是,并行化后的Agent执行所有函数时不再占用当前线程的计算资源,Server这边只需要执行Agent的计算函数,等待部署在其他计算资源上的Agent计算完成之后返回结果。
从这个简单的例子可以看出,用户实现单机到多机并行的改造成本相当低――利用修饰符来Wrap一个需要在远端调起的类。在Server端可以通过相应接口获取远端的对象,通过执行该对象的函数就可以实现远端计算资源的调用。
新增并行算法示例:IMPALA
PARL1.1 新增了对IMPALA、A2C、GA3C等并行算法的支持,下面以实现难度最大的IMPALA算法为例,介绍下如何通过并行修饰符轻松实现这个算法。IMPALA是强化学习领域目前引用数量最多的并行算法,相对之前主流的A3C算法拥有更高的数据吞吐量以及收敛速度。IMPALA算法为了实现性能的最大化,将整个实现分为Actor/Learner两个部分:Actor负责与simulator交互,生成数据提供给Learner;Learner 负责收集数据来进行训练,同时把最新的模型推送给Actor。
在IMPALA算法这种Actor与Learner的组成结构中,Actor与Learner间需要进行两种数据交互:训练数据传输以及模型传输。如果用传统的多进程实现这种数据交互的话,用户需要维护两个单独的进程间队列来进行数据传输,开发成本相当高。
在PARL中,我们通过parl.remote_class对Actor进行并行化改造,就可以像在本地操作一样对Actor进行操作,比如Leaner需要给Actor传输参数,只需要在Learner端执行actor.set_param(params)函数即可。从这里可以看出,在实际的编码过程中,用户不需要关心数据是如何通过网络传输过去的,也不需要维护多线程队列这些数据结构来实现数据的同步,用户写并行代码和写多线程代码一样简单,十分容易上手。
目前,IMPALA算法的实现已经完整开源在PARL仓库中,相关的性能指标见下图。
值得一提的是,PARL继续保持着1.0版本的高复用性,用户如果想在别的环境中尝试IMPALA算法只需要定义自己的model(前向网络),然后需要复用algorithms下的IMPALA算法即可。
性能对比
为了让用户更好地了解PARL的并行性能,我们将PARL与基于Ray实现的强化学习并行框架Rllib进行对比。Rllib是伯克利开源的分布式强化学习框架,是目前开源社区中对于分布式强化学习训练支持最好的框架之一。在强化学习框架中,最为重要的一个指标是单位时间内的数据吞吐量,也就是在同等计算资源下对比不同框架实现同样的算法后的数据收集速度。为此,我们对比了PARL以及Rllib实现的IMPALA算法在雅达利游戏上的数据吞吐量(1 P40 GPU+32CPU):
可以看到,PARL在单位时间内的数据收集量相对于Rllib提升了159.4%,这说明PARL在并行性能上达到了业界领先的水准。
第二个对比的指标是收敛速度,这里我们着重对比了在一小时内两个框架在多个Benchmark上的收敛效果见下图。
表格中的数据体现了,在4个Benchmark上跑多次实验的整体指标比Rllib更高。
可以看到,PARL 1.1的并行设计非常简单易于上手,而在并行性能方面也具有很大的优势。希望为广大强化学习的研究者提供更好的支持和帮助。自我安利一下,
强化学习的开源项目在github上还是有挺多的,本文列举了一部分,肯定不全面,持续更新中。
1.乒乓球游戏+策略梯度算法
这是应用强化学习的策略梯度算法的乒乓球游戏,Andrej Karpathy通过130行代码实现的,帮助理解强化学习算法。
这个非常适合作为强化学习的入门Demo!!!!代码附在下面,代码没有坑需要踩,直接运行即可,训练一段时间就能看到直观的效果。
Deep Reinforcement Learning: Pong from Pixels代码:
2.小鸟FlappyBird游戏+DQN算法
该项目通过卷积神经网络+Q-learning算法,利用Keras框架共210行代码实现了让程序自己学习如何玩耍FlappyBird。
新手向――使用Keras+卷积神经网络玩小鸟3.Torcs自动驾驶+DDPG算法
Ben Lau使用DDPG方法在Torcs仿真器中实现自动驾驶,应用的Keras框架,大约300行代码,可作为自动驾驶方向的强化学习入门实验。自动驾驶方向研究强化学习的基本上都跑过这个实验吧,17、18年根据这篇文章改进的论文也比较多。
中文翻译:
代码:
4.AirSim+DQN
微软的AirSim也有自动驾驶的场景,场景比Torcs逼真一些。
AirSim:
microsoft/AirSim
DQN:
microsoft/AirSim
5.莫烦视频+代码
莫烦的视频通俗易懂,深入浅出,没有复杂的公式推导,有小demo入门,代码讲解的比较清晰。如果英文不好编程能力不强的话,莫烦的视频入门真的真的很适合。
莫烦Python代码github地址:
MorvanZhou/Reinforcement-learning-with-tensorflow
6.David Silver视频
David Silver的课程在强化学习领域算是比较权威了,一定要认真仔细看,做好笔记,最好是有强化学习基础知识,要不然很多地方听不太懂。
【强化学习】Reinforcement Learning Course by David Silver_哔哩哔哩 (b-b)つロ 干杯~-bilibili7.强化学习书+代码
第一本强化学习的书,也是最经典的书,《Reinforcement Learning: An Introduction》,书中对应的代码:
ShangtongZhang/reinforcement-learning-an-introduction
8.OpenAI Gym
目前强化学习编程实战常用的环境就是OpenAI的gym库了,支持Python语言编程。OpenAI Gym是一款用于研发和比较强化学习算法的工具包,它支持训练智能体(agent)做任何事――从行走到玩Pong或围棋之类的游戏都在范围中。
9.Gym Retro
大约18年,OpenAI 发布了完整版游戏强化学习研究平台――Gym Retro。游戏数量从大约 70 个雅达利和 30 个世嘉游戏增加到了1000多个游戏,其中包括对Game boy等各种模拟器的支持。此外,OpenAI 还将发布用于向 Gym 平台添加新游戏的工具。
openai/retro10.Gym-Duckieto强烈推荐,B站最强学习资源汇总(数据科学,机器学习,python)
强烈推荐必看的国产剧,强烈推荐必看的古装剧,强烈推荐必看的韩剧爱情,强烈推荐必看的英美剧
文章来源于微信公众号:数据派THU
原文链接:请点击
文章仅用于学习交流,如有侵权请联系删除
经过这几个月的居家隔离,想必大多数同学都开始习惯通过线上的方式开展学习了,在线教育领域也因此迎来了一波爆发,竞争异常激烈,既有知名平台如MOOC、学堂在线、网易云课堂等,也有不少初创新星。但要说最受年轻人欢迎的学习资源网站,应该非B站莫属。该平台资源之丰富不用多说,并且全程无广告,很多网友都表示自己通过B站学会了很多技能,比如Python、数据库、Photoshop、英语考级、日语考级等。总之,一个B站就足够解决绝大多数问题。下面,我们整理一波B站上关于数据科学、人工智能领域的学习资料和值得关注的up主,欢迎大家收藏转发哦~
1、Crash Course AI
课程介绍:该课程出自Crash Course,首发YouTube,单个视频时长均在10分钟左右。视频节奏非常好,语速偏快,适合下饭时间入门了解。主讲很擅长深入浅出的讲清复杂的概念,一集信息量很大甚至评论区还会有课代表帮你总结才能稍稍消化。
1、Up主:3Blue1Brown的数学基础
课程介绍:用动画讲述数学专业知识,其视频涵盖了线性代数、微积分、拓扑学等领域,每门课都配有直观生动的动画演示,帮助观众加深对数学概念定理的理解。
2、数学分析
课程介绍:复旦陈纪修老师的数学分析视频课程,共214讲。陈纪修老师主持编写了21世纪课程教材――《数学分析》。
3、数学建模
课程介绍:清华大学数学建模公开课,共84讲。教材用的是《数学模型》姜启源 。
4、统计学
课程介绍:可汗学院公开课,将统计学所有内容都涵盖了。共85讲。
1、Python数据可视化分析
课程介绍:麦子学院的公开课,共31讲。
2、Matplotlib Python 画图教程
课程介绍:莫烦Python的课程内容,共19讲。
1、Python 数据分析与展示(北京理工大学 )
课程介绍:北京理工大学MOOC课程,共65讲。2、Numpy & Pandas
课程介绍:莫烦 Python 数据处理教程,主要讲解Numpy、Pandas两个包的使用。共18讲。3、【数据分析】SQL数据库入门到精通,最干净易懂的小白必备教程10小时完整版
课程介绍:英文课程,中文字幕,很多同学表示这是看过最好的课程,通俗易懂。
1、清华大学-数据挖掘:理论与算法
课程介绍:本课程完整覆盖数据挖掘领域的各项核心技术,包括数据预处理、分类、聚类、回归、关联、推荐、集成学习、进化计算等。强调在知识的广度、深度和趣味性之间寻找最佳平衡点,在生动幽默中讲述数据挖掘的核心思想、关键技术以及一些在其它相关课程和教科书中少有涉及的重要知识点,适合对大数据和数据科学感兴趣的各专业学生以及工程技术人员学习。
1、[中英字幕]吴恩达机器学习系列课程
课程介绍:这是个视频是转自吴恩达老师在Coursera上的公开课视频,内容偏向理论而并非实战,适合初学机器学习、深度学习的同学。需要视频配套资料的可以看看这里这是国内黄博士为吴老师课程配的全套资料,包括视频字幕,对应python代码,原版PPT,中文版笔记等等
2、林轩田机器学习基石(国语)
课程介绍:台湾大学林轩田老师的《机器学习基石》课程由浅入深、内容全面,基本涵盖了机器学习领域的很多方面。其作为机器学习的入门和进阶资料非常适合。而且林老师的教学风格也很幽默风趣,总让读者在轻松愉快的氛围中掌握知识。
3、机器学习技法(林轩田)
4、李宏毅机器学习(2017)
课程介绍:台大教授李宏毅制作的,经常被认为机器学习中文课程的首选,而且课程风格诙谐幽默,这就让枯燥的课程变的有趣许多。而且最重要的是,课程中布置了很多作业,而万能的网友更是找出了作业答案,并将其公布在了留言区,可以说太良心了,简直是没钱报班学习者的福音。
5、up主:shuhuai008 【机器学习】【白板推导系列】
课程介绍:这个up主来自清华,他做的这一套机器学习白板推导的视频讲解系列目前出到第33集流模型。这个视频系列最大的特点是给出了整体的框架,再用单章去分解里面的重点,力求做到简洁易懂,很有中国特色。对比国外普遍一个视频2小时的课程,更适合国人。
6、机器学习教程【强烈推荐】
课程介绍:这门课程来自邹博老师的《机器学习与数学分析》,风格同样是深入浅出、通俗易懂,对于有基础和没基础的同学,都能让你轻易入门。
7、机器学习算法-2017邹博最新(Python版)
课程介绍:这门课程同样来自邹博老师,适合配合上一部一起观看。
8、(上海交通大学张志华)机器学习导论
课程介绍:张志华老师的这门课讲的很深入,适合学习机器学习和深度学习的研究者深入学习,内容比较偏向理论,需要一定的数学基础。
9、Scikit-learn (sklearn) 优雅地学会机器学习 (莫烦 Python 教程)
课程介绍:莫烦的机器学习教程汇集了很多近些年来比较流行的 python 模块教程。课程内容有趣,没有机器学习背景的朋友们也能产生兴趣,对机器学习的每种方法都能迅速理解。另外,对于已经入门了的同学们, 这门课程也是一个提升自己应用机器学习的好地方, 因为里面同时也介绍了很多种机器学习的技巧方法, 能大大帮助提升学习效果。
10、Stanford : Statistical Learning 斯坦福大学:统计学习
课程介绍:这门课程来自统计学两位超级大佬,全英文字幕,是公认的统计学系入门课程,使用的教材是Introduction to statistical learning,极力避免深奥的公式推导和复杂的概念,对于数学基础不好的人非常友好。
1、【中英字幕】吴恩达深度学习课程
第一课 ― 神经网络与深度学习
课程介绍:这门课程的目标是为同学们介绍深度学习的基础知识。学完这门课,你将能够:理解驱动深度学习的主要技术趋势;能够搭建、训练并且运用全连接的深层神经网络;了解如何实现高效的(向量化)的神经网络;理解神经网络架构中的关键参数。第二课 ― 改善深层神经网络:超参数调试、正则化以及优化
课程介绍:这门课程将学会理解业界构建深度神经网络应用最有效的做法;能够高效地使用神经网络通用的技巧,包括初始化、L2和dropout正则化、Batch归一化、梯度检验;能够实现并应用各种优化算法,例如mini-batch、Momentum、RMSprop和Adam,并检查它们的收敛程度;理解深度学习时代关于如何构建训练/开发/测试集以及偏差/方差分析最新最有效的方法;能够用TensorFlow实现一个神经网络。第三课 ― 结构化机器学习项目
课程介绍:这门课程将学会理解如何诊断机器学习系统中的错误;能够优先减小误差最有效的方向;理解复杂ML设定,例如训练/测试集不匹配,比较并/或超过人的表现;知道如何应用端到端学习、迁移学习以及多任务学习。第四课 ― 卷积神经网络
课程介绍:这门课程将学会理解如何搭建一个神经网络,包括最新的变体,例如残余网络;知道如何将卷积网络应用到视觉检测和识别任务;知道如何使用神经风格迁移生成艺术;能够在图像、视频以及其他2D或3D数据上应用这些算法。第五课 ― 序列模型
课程介绍:这门课程将学会理解如何构建并训练循环神经网络(RNN),以及一些广泛应用的变体,例如GRU和LSTM;能够将序列模型应用到自然语言问题中,包括文字合成;能够将序列模型应用到音频应用,包括语音识别和音乐合成。
2、up主:周博磊 强化学习纲要
课程介绍:最近,香港中文大学信息工程系助理教授周博磊也开始当up主,上传自己的《强化学习》课程。整个课程共分为基础课程和高阶课程两大部分,主要面向大三、大四或研一的学生,参加课程的学生需要具备相关背景知识,包括线性代数、概率论、机器学习(数据挖掘、模式识别、深度学习)等。此外,由于该课程有不少实践内容,所以参加课程的同学最好有一些编程经验,会用 Python、PyTorch。除了直播和课程视频之外,周博磊还会同步更新课程的代码,使用的编程语言为 Python,深度学习框架则是 TensorFlow 和 PyTorch 皆可(PyTorch 为主)。和常规的课程一样,《强化学习纲要》也会在每节课后留下一些作业。
3、深度学习框架Tensorflow学习与应用
课程介绍:这门课程来自炼数成金。课程内容基本上是以代码编程为主,也会有少量的深度学习理论内容。课程会从Tensorflow最基础的图(graphs),会话(session),张量(tensor),变量(Variable)等一些最基础的知识开始讲起,逐步讲到Tensorflow的基础使用,以及在Tensorflow中CNN和LSTM的使用。在课程的后面会带着大家做几个实际的项目,比如训练自己的模型去进行图像识别,使用Tensorflow进行验证码的识别,以及Tensorflow在NLP中的使用。
4、PyTorch 动态神经网络 (莫烦 Python 教学)
课程介绍:这套视频比较适合有一些机器学习课程基础的同学。
5、Numpy & Pandas (莫烦 Python 数据处理教程)
课程介绍:这门课程汇集了在 Python 中最重要的数据处理,科学计算模块: Numpy 和 Pandas。
6、Matplotlib Python 画图教程 (莫烦Python)
课程介绍:Matplotlib 是一个非常强大的 Python 画图工具;这门课程可以对比莫烦numpy & pandas & matplotlib同时来学。
7、tensorflow2.0入门与实战 2019年最通俗易懂的课程
课程介绍:本课程是关于Tensorflow与深度学习实战的一门课程。该课用通俗易懂的实例,系统讲解了Tensorflow2.0的使用,可以说是目前最新最系统的 Tensorflow 2.0 教程。其中讲解了Tensorflow中各种概念、操作和使用方法,针对Tensorflow的基础知识,在传统数据分析中应用进行详细讲解,并且给出了丰富的深度学习模型实战。
8、斯坦福2017季CS231n深度视觉识别课程视频
课程介绍:本课程是斯坦福大学关于计算机视觉的课程,全英文字幕,老师是Fei-Fei Li, Justin Johnson, Serena Yeung。
9、【北京大学】人工智能实践:Tensorflow笔记
课程介绍:这是人工智能入门课,将用八次课帮你梳理人工智能概念、机器学习方法、深度学习框架。
10、Keras 快速搭建神经网络 (莫烦 Python 教程)
课程介绍:这门课程包括对Keras的介绍以及如何搭建各种神经网络。
11、李宏毅对抗生成网络(GAN)国语教程(2018)
课程介绍:这门课程内容详略得当,不想推公式的同学可以跳过推导,并不影响后续课程。
课程的项目和论文都很新,同时也很生动,可以迅速的接触一些最新的东西。另外,为了讲清楚一个概念或技术,PPT的可视化做的非常用心,简洁易懂。
12、李宏毅深度强化学习(国语)课程(2018)
课程介绍:这门课程每个视频大约40分钟左右,PPT内容为英文,讲授语言为中文。课程内容主打强化学习,涉及理论和论文解读,需要同学们具备一定的强化学习基础。
13、David Silver 强化学习课程高清版
课程介绍:这是David Silver在 UCL 讲授的强化学习入门课程。Silver就是那位来自 DeepMind,在 Nature 上发表了 DQN 论文,紧接着提出 AlphaGo 和 AlphaGo Zero,从此掀起深度强化学习研究浪潮的大神。他的课程深入浅出,在介绍强化学习概念的过程中穿插了很多例子,对初学者非常友好,建议作为第一个观看的入门视频课程。
14、【中英文字幕】OpenAI - Spinning Up in Deep RL Workshop (Deep Reinforcement Learning)
课程介绍:对于想上手实践深度强化学习的同学们,这门课程是不错的资源,从 VPG(Vanilla Policy Gradient) 到 TRPO(Trust Region Policy Optimization)、SAC(Soft Actor-Critic) 均有实现,关键是 OpenAI 出品,代码质量高。
15、斯坦福CS224n深度学习自然语言处理课程 by Chris Manning
课程介绍:这门自然语言处理课程是值得每个NLPer学习的NLP课程,由 Christopher Manning大神坐镇主讲,在斯坦福大学已经讲授很多年。此次2019年新课,有很多更新,除了增加一些新内容外,最大的一点大概是代码由Tensorflow迁移到PyTorch。这门课程的主要目标是希望学生能学到现代深度学习相关知识,特别是和NLP相关的一些知识点;能从宏观上了解人类语言以及理解和产生人类语言的难度;能理解和用代码(PyTorch)实习NLP中的一些主要问题和人物,例如词义理解、依存句法分析、机器翻译、问答系统等。
1、清华「云上学堂」:刘知远老师闲话AI――自然语言理解难在哪儿
课程介绍:这门课程来自清华大学计算机系刘知远老师。该课程不涉及任何算法及公式,主要是对为什么开展自然语言理解的研究进行介绍,对于想要入门相关领域同学不妨一看。
Python
1、[小甲鱼]零基础入门学Python
课程介绍:小甲鱼教学视频全套共96套,课程生动有趣幽默,强烈推荐给零基础学习python的同学,一步一步深入熟知Python。
2、Python编程 从入门到实践
课程介绍:这门课程还有配套纸质书籍,非常适合初学者入门的python神书,文笔精炼,内容浅显易懂,还有源代码可做练习题。
3、麻省理工公开课(计算机科学导论及Python编程)
课程介绍:这门课是为零基础或编程经验较少的学生设计。适合新手学习编程,掌握基础计算机科学理论知识。
4、【Python】这可能是你见过的最简洁最没有废话的Python教程
课程介绍:老师雨敲窗表示,由于自己在python的学习道路上摸索了一些方法,也知道小白入门的痛点在哪里,所以这有可能是大家见到的最简洁的python入门教程,每节课视频长度5到10分钟,再花个一两个小时敲一敲代码就足够了。
5、python全栈开发(入门到放弃)
课程介绍:这门课程共616讲,内容非常系统翔实,包含Python 领域方方面面,对基础的讲解非常透彻。
6、python数据结构与算法系列课程
课程介绍:课程一共44讲,知识点清晰,适合刚入门学习不久的学生,视频中所讲的算法较好理解,没学过python的也能看得懂,里面用得较多的是 if、while循环,涉及python其它的语法的少。另外,该视频还有配套书籍,名称是 《数据结构与算法 Python语言描述 裘宗燕著》。
7、Python教程_600集Python从入门到精通教程(懂中文就能学会)
8、2019 Python教程400集 不定时更新!
课程介绍:这套Python课程400集,从零基础开始,全面讲解Python基础,直达可以手写神经网络的境界。
9、Python 基础教程 (莫烦 Python 教程)
课程介绍:Python基础非常适合刚入门, 或者是以前使用过其语言的同学, 每一段视频都不会很长, 节节相连, 对于迅速掌握基础的使用方法很有帮助。
10、【千锋教育】Python 900集(学完可就业/2019版)
课程介绍:这门课程非常全面,很适合自学人群的查漏补缺。
1、up主:python人工智能大数据
推荐理由:这名up主来自清华大学,除了会搬运一些经典AI课程,还会有一些戳中同学痛点的视频,比如AI研究生不知道如何写论文??清华大学计算机教
当大火的文图生成模型遇见知识图谱,AI画像趋近于真实世界
文图在线制作,文图制作app,文图app官网,文图作者作者:朱祥茹、段忠杰、汪诚愚、黄俊
用户生成内容(User Generated Content,UGC)是互联网上多模态内容的重要组成部分,UGC数据级的不断增长促进了各大多模态内容平台的繁荣。在海量多模态数据和深度学习大模型的加持下,AI生成内容(AI Generated Content,AIGC)呈现出爆发性增长趋势。其中,文图生成(Text-to-image Generation)任务是流行的跨模态生成任务,旨在生成与给定文本对应的图像。典型的文图模型例如OpenAI开发的DALL-E和DALL-E2。近期,业界也训练出了更大、更新的文图生成模型,例如Google提出的Parti和Imagen,基于扩散模型的Stable Diffusion等。
然而,上述模型一般不能用于处理中文的需求,而且上述模型的参数量庞大,很难被开源社区的广大用户直接用来Fine-tune和推理。此外,文图生成模型的训练过程对于知识的理解比较缺乏,容易生成反常识内容。本次,EasyNLP开源框架在先前推出的基于Transformer的文图生成模型(看这里)基础上,进一步推出了融合丰富知识图谱知识的文图生成模型ARTIST,能在知识图谱的指引上,生成更加符合常识的图片。我们在中文文图生成评测基准MUGE上评测了ARTIST的生成效果,其生成效果名列榜单第一。我们也向开源社区免费开放了知识增强的中文文图生成模型的Checkpoint,以及相应Fine-tune和推理接口。用户可以在我们开放的Checkpoint基础上进行少量领域相关的微调,在不消耗大量计算资源的情况下,就能一键进行各种艺术创作。
EasyNLP()是阿?云机器学习PAI 团队基于 PyTorch 开发的易?且丰富的中?NLP算法框架,?持常?的中?预训练模型和?模型落地技术,并且提供了从训练到部署的?站式 NLP 开发体验。EasyNLP 提供了简洁的接?供?户开发 NLP 模型,包括NLP应? AppZoo 和预训练 ModelZoo,同时提供技术帮助?户?效的落地超?预训练模型到业务。由于跨模态理解需求的不断增加,EasyNLP也?持各种跨模态模型,特别是中?领域的跨模态模型,推向开源社区,希望能够服务更多的 NLP 和多模态算法开发者和研 究者,也希望和社区?起推动 NLP /多模态技术的发展和模型落地。
本?简要介绍ARTIST的技术解读,以及如何在EasyNLP框架中使?ARTIST模型。
ARTIST模型的构建基于Transformer模型 ,将文图生成任务分为两个阶段进行,第一阶段是通过VQGAN模型对图像进行矢量量化,即对于输入的图像,通过编码器将图像编码为定长的离散序列,解码阶段是以离散序列作为输入,输出重构图。第二阶段是将文本序列和编码后的图像序列作为输入,利用GPT模型学习以文本序列为条件的图像序列生成。为了增强模型先验,我们设计了一个Word Lattice Fusion Layer,将知识图谱中的的实体知识引入模型,辅助图像中对应实体的生成,从而使得生成的图像的实体信息更加精准。下图是ARTIST模型的系统框图,以下从文图生成总体流程和知识注入两方面介绍本方案。
在VQGAN的训练阶段,我们利用数据中的图片,以图像重构为任务目标,训练一个图像词典的codebook,其中,这一codebook保存每个image token的向量表示。实际操作中,对于一张图片,通过CNN Encoder编码后得到中间特征向量,再对特征向量中的每个编码位置寻找codebook中距离最近的表示,从而将图像转换成由codebook中的imaga token表示的离散序列。第二阶段中,GPT模型会以文本为条件生成图像序列,该序列输入到VQGAN Decoder,从而重构出一张图像。
为了将知识图谱中的知识融入到文图生成模型中,我们首先通过TransE对中文知识图谱CN-DBpedia进行了训练,得到了知识图谱中的实体表示。在GPT模型训练阶段,对于文本输入,首先识别出所有的实体,然后将已经训练好的实体表示和token embedding进行结合,增强实体表示。但是,由于每个文本token可能属于多个实体,如果将多个实体的表示全都引入模型,可能会造成知识噪声问题。所以我们设计了实体表示交互模块,通过计算每个实体表示和token embedding的交互,为所有实体表示加权,有选择地进行知识注入。特别地,我们计算每个实体表征对对于当前token embedding的重要性,通过内积进行衡量,然后将实体表示的加权平均值注入到当前token embedding中,计算过程如下:
得到知识注入的token embedding后,我们通过构建具有layer norm的self-attention网络,构建基于Transformer的GPT模型,过程如下:
在GPT模型的训练阶段,将文本序列和图像序列拼接作为输入,假设文本序列为w, 生成图像的imaga token表示的离散序列概率如下所示:
最后,模型通过最大化图像部分的负对数似然来训练,得到模型参数的值。
我们在多个中文数据集上评估了ARTIST模型的效果,这些数据集的统计数据如下所示:
在Baseline方面,我们考虑两种情况:zero-shot learning和标准fine-tuning。我们将40亿参数的中文CogView模型作为zero-shot learner,我们也考虑两个模型规模和ARTIST模型规模相当的模型,分别为开源的DALL-E模型和OFA模型。实验数据如下所示:
从上可以看出,我们的模型在参数量很小的情况(202M)下也能获得较好的图文生成效果。为了衡量注入知识的有效性,我们进一步进行了相关评测,将知识模块移除,实验效果如下:
上述结果可以清楚地看出知识注入的作用。
为了更加直接地比较不同场景下,ARTIST和baseline模型生成图像质量对比,我们展示了电商商品场景和自然风光场景下各个模型生成图像的效果,如下图:
上图可以看出ARTIST生成图像质量的优越性。我们进一步比较我们先前公开的模型(看这里)和具有丰富知识的ARTIST模型的效果。在第一个示例“手工古风复原款发钗汉服配饰宫廷发簪珍珠头饰发冠”中,原始生成的结果主要突出了珍珠发冠这个物体。在ARTIST模型中,“古风”等词的知识注入过程使得模型生成结果会更偏向于古代中国的珍珠发簪。
第二个示例为“一颗绿色的花椰菜在生长”。由于模型在训练时对“花椰菜”物体样式掌握不够,当不包含知识注入模块时,模型根据“绿色”和“菜”的提示生成了有大片绿叶的单株植物。在ARTIST模型中,生成的物体更接近于形如花椰菜的椭圆形的植物。
MUGE(Multimodal Understanding and Generation Evaluation,链接)是业界首个大规模中文多模态评测基准,其中包括基于文本的图像生成任务。我们使用本次推出的ARTIST模型在中文MUGE评测榜单上验证了前述文图生成模型的效果。从下图可见,ARTIST模型生成的图像在FID指标(Frechet Inception Distance,值越低表示生成图像质量越好)上超越了榜单上的其他结果。
在EasyNLP框架中,我们在模型层构建了ARTIST模型的Backbone,其主要是GPT,输入分别是token id和包含的实体的embedding,输出是图片各个patch对应的离散序列。其核?代码如下所示:
# in easynlp/appzoo/text2image_generation/model.py # init self.transformer=GPT_knowl(self.config) # forward x=inputs['image'] c=inputs['text'] words_emb=inputs['words_emb'] x=x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format) # one step to produce the logits _, z_indices=self.encode_to_z(x) c_indices=c cz_indices=torch.cat((c_indices, a_indices), dim=1) # make the prediction logits, _=self.transformer(cz_indices[:, :-1], words_emb, flag=True) # cut off conditioning outputs - output i corresponds to p(z_i | z_{<i}, c) logits=logits[:, c_indices.shape[1]-1:]
在数据预处理过程中,我们需要获得当前样本的输入文本和实体embedding,从而计算得到words_emb:
# in easynlp/appzoo/text2image_generation/data.py # preprocess word_matrix words_mat=np.zeros([self.entity_num, self.text_len], dtype=np.int) if len(lex_id) > 0: ents=lex_id.split(' ')[:self.entity_num] pos_s=[int(x) for x in pos_s.split(' ')] pos_e=[int(x) for x in pos_e.split(' ')] ent_pos_s=pos_s[token_len:token_len+self.entity_num] ent_pos_e=pos_e[token_len:token_len+self.entity_num] for i, ent in enumerate(ents): words_mat[i, ent_pos_s[i]:ent_pos_e[i]+1]=ent encoding['words_mat']=words_mat # in batch_fn words_mat=torch.LongTensor([example['words_mat']for example in batch]) words_emb=self.embed(words_mat)
以下我们简要介绍如何在EasyNLP框架使?ARTIST模型。
?户可以直接参考GitHub()上的说明安装EasyNLP算法框架。
- 准备自己的数据,将image编码为base64形式:ARTIST在具体领域应用需要finetune, 需要用户准备下游任务的训练与验证数据,为tsv文件。这件包含以制表符\ 分隔的三列(idx, text, imgbase64),第一列是文本编号,第二列是文本,第三列是对应图片的base64编码。样例如下:
64b4109e34a0c3e7310588c00fc9e157 韩国可爱日系袜子女中筒袜春秋薄款纯棉学院风街头卡通兔子长袜潮 iVBORw0KGgoAAAAN...MAAAAASUVORK5CYII=
下列?件已经完成预处理,可?于训练和测试:
https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/T2I_train.tsv https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/T2I_val.tsv https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/T2I_test.tsv
- 将输入数据与lattice、entity位置信息拼接到一起:输出格式为以制表符\ 分隔的几列(idx, text, lex_ids, pos_s, pos_e, seq_len,[Optional]imgbase64)
# 下载entity to entity_id映射表 wget wget -P https://zhuanlan.zhihu.com/p/tmp https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/entity2id.txt python examples/text2image_generation/preprocess_data_knowl.py \\ --input_file https://zhuanlan.zhihu.com/p/tmp/T2I_train.tsv \\ --entity_map_file https://zhuanlan.zhihu.com/p/tmp/entity2id.txt \\ --output_file https://zhuanlan.zhihu.com/p/tmp/T2I_knowl_train.tsv python examples/text2image_generation/preprocess_data_knowl.py \\ --input_file https://zhuanlan.zhihu.com/p/tmp/T2I_val.tsv \\ --entity_map_file https://zhuanlan.zhihu.com/p/tmp/entity2id.txt \\ --output_file https://zhuanlan.zhihu.com/p/tmp/T2I_knowl_val.tsv python examples/text2image_generation/preprocess_data_knowl.py \\ --input_file https://zhuanlan.zhihu.com/p/tmp/T2I_test.tsv \\ --entity_map_file https://zhuanlan.zhihu.com/p/tmp/entity2id.txt \\ --output_file https://zhuanlan.zhihu.com/p/tmp/T2I_knowl_test.tsv
在文图生成任务中,我们对ARTIST进行微调,之后用于微调后对模型进行预测。相关示例代码如下:
# 下载entity_id与entity_vector的映射表 wget -P https://zhuanlan.zhihu.com/p/tmp https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/entity2vec.pt # finetune python -m torch.distributed.launch $DISTRIBUTED_ARGS examples/text2image_generation/main_knowl.py \\ --mode=train \\ --worker_gpu=1 \\ --tables=https://zhuanlan.zhihu.com/p/tmp/T2I_knowl_train.tsv,https://zhuanlan.zhihu.com/p/tmp/T2I_knowl_val.tsv \\ --input_schema=idx:str:1,text:str:1,lex_id:str:1,pos_s:str:1,pos_e:str:1,token_len:str:1,imgbase64:str:1, \\ --first_sequence=text \\ --second_sequence=imgbase64 \\ --checkpoi
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。