为什么在python中and3.6中 True and 'p' 会显示出'p'呢? 明明是个string啊

&img src=&/v2-3ceb18afa2fe_b.jpg& data-rawwidth=&600& data-rawheight=&232& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-3ceb18afa2fe_r.jpg&&&h2&1 前言&/h2&&p&Meta Learning 元学习或者叫做 Learning to Learn 学会学习 已经成为继Reinforcement Learning 增强学习之后又一个重要的研究分支(以后仅称为Meta Learning)。对于人工智能的理论研究,呈现出了&/p&&blockquote&&b&Artificial Intelligence --& Machine Learning --& Deep Learning --& Deep Reinforcement Learning --& Deep Meta Learning&/b&&/blockquote&&p&这样的趋势。&/p&&p&之所以会这样发展完全取决于当前人工智能的发展。在Machine Learning时代,复杂一点的分类问题效果就不好了,Deep Learning深度学习的出现基本上解决了一对一映射的问题,比如说图像分类,一个输入对一个输出,因此出现了AlexNet这样的里程碑式的成果。但如果输出对下一个输入还有影响呢?也就是sequential decision making的问题,单一的深度学习就解决不了了,这个时候Reinforcement Learning增强学习就出来了,Deep Learning + Reinforcement Learning = Deep Reinforcement Learning深度增强学习。有了深度增强学习,序列决策初步取得成效,因此,出现了AlphaGo这样的里程碑式的成果。但是,新的问题又出来了,深度增强学习太依赖于巨量的训练,并且需要精确的Reward,对于现实世界的很多问题,比如机器人学习,没有好的reward,也没办法无限量训练,怎么办?这就需要能够快速学习。而人类之所以能够快速学习的关键是人类具备学会学习的能力,能够充分的利用以往的知识经验来指导新任务的学习,因此Meta Learning成为新的攻克的方向。&/p&&p&以此同时,星际2 DeepMind使用现有深度增强学习算法失效说明了目前的深度增强学习算法很难应对过于复杂的动作空间的情况,特别是需要真正意义的战略战术思考的问题。这引到了通用人工智能中极其核心的一个问题就是要让人工智能自己学会思考,学会推理。AlphaGo在我看来在棋盘特征输入到神经网络的过程中完成了思考,但是围棋的动作空间毕竟非常有限,也就是几百个选择,这和星际2几乎无穷的选择对比就差太多了(按屏幕分辨率*鼠标加键盘的按键 =
约等于20,000,000种选择)。然而在如此巨量选择的情况下,人类依然没问题,关键是人类通过确定的战略战术大幅度降低了选择范围(比如当前目标就是造人,挖矿)因此如何使人工智能能够学会思考,构造战术非常关键。这个问题甚至比快速学习还要困难,但是Meta Learning因为具备学会学习的能力,或许也可以学会思考。因此,Meta Learning依然是学会思考这种高难度问题的潜在解决方法之一。&/p&&p&经过以上的分析,不过是为了得出下面的结论:&/p&&blockquote&&b&Meta Learning是实现通用人工智能的关键!&/b&&/blockquote&&p&在本文之前,专栏已经发布了两篇和Meta Learning相关的文章:&/p&&ol&&li&&a href=&/p/& class=&internal&&学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习&/a& &/li&&li&&a href=&/p/& class=&internal&&机器人革命与学会学习Learning to Learn&/a& &/li&&/ol&&p&之前采用Learning to Learn这个名称是希望让更多的知友明白这个概念,从本篇开始,我们会直接使用Meta Learning这个名称(其实只是因为这个名称看起来更专业更酷 ) &/p&&p&关于Meta Learning的概念本文就不介绍了,在上面列出的两篇Blog已有讲解。本文将和大家分享一下Meta Learning的一些最前沿的研究进展,可以说是百家争鸣的阶段。&/p&&h2&2 Meta Learning百花齐放的研究思路&/h2&&p&为什么说Meta Learning的研究是&b&百家争鸣&/b&呢?因为每一家的研究思路都完全不同,真的是各种方法各种试,呈现出一种&b&智慧大爆发&/b&的阶段。&/p&&p&关于Meta Learning的papers,我收集了一下:&/p&&p&&a href=&/?target=https%3A///songrotek/Meta-Learning-Papers& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&songrotek/Meta-Learning-Papers&i class=&icon-external&&&/i&&/a&&/p&&p&这里主要分析一下最近一两年来的发展情况,先作个分类,然后做一下简要的分析。&/p&&p&&b&2.1 基于记忆Memory的方法&/b&&/p&&p&基本思路:既然要通过以往的经验来学习,那么是不是可以通过在神经网络上添加Memory来实现呢?&/p&&p&代表文章:&/p&&p&[1] Santoro, Adam, Bartunov, Sergey, Botvinick, Matthew, Wierstra, Daan, and Lillicrap, Timothy. &b&Meta-learning with memory-augmented neural networks&/b&. In Proceedings of The 33rd International Conference on Machine Learning, pp. , 2016.&/p&&p&[2] Munkhdalai T, Yu H. &b&Meta Networks&/b&. arXiv preprint arXiv:, 2017.&/p&&p&以Meta-Learning with memory-augmented neural networks这篇文章为例,我们看一下他的网络结构:&/p&&p&&br&&/p&&img data-rawheight=&558& src=&/v2-e4cd5286ace041a0dcfa5ee7_b.png& data-rawwidth=&2024& class=&origin_image zh-lightbox-thumb& width=&2024& data-original=&/v2-e4cd5286ace041a0dcfa5ee7_r.png&&&p&我们可以看到,网络的输入把上一次的y label也作为输入,并且添加了external memory存储上一次的x输入,这使得下一次输入后进行反向传播时,可以让y label和x建立联系,使得之后的x能够通过外部记忆获取相关图像进行比对来实现更好的预测。&/p&&p&&br&&/p&&p&&b&2.2 基于预测梯度的方法&/b&&/p&&p&基本思路:既然Meta Learning的目的是实现快速学习,而快速学习的关键一点是神经网络的梯度下降要准,要快,那么是不是可以让神经网络利用以往的任务学习如何预测梯度,这样面对新的任务,只要梯度预测得准,那么学习得就会更快了?&/p&&p&代表文章:&/p&&p&[1] Andrychowicz, Marcin, Denil, Misha, Gomez, Sergio, Hoffman, Matthew W, Pfau, David, Schaul, Tom, and de Freitas, Nando. &b&Learning to learn by gradient descent by gradient descent&/b&. In Advances in Neural Information Processing Systems, pp. , 2016&/p&&p&&br&&/p&&img data-rawheight=&688& src=&/v2-40fcac4bfee_b.png& data-rawwidth=&1628& class=&origin_image zh-lightbox-thumb& width=&1628& data-original=&/v2-40fcac4bfee_r.png&&&p&这篇文章的思路很清奇,训练一个通用的神经网络来预测梯度,用一次二次方程的回归问题来训练,然后这种方法得到的神经网络优化器比Adam,RMSProp还要好,这样显然就加快了训练。&/p&&p&&br&&/p&&p&&b&2.3 利用Attention注意力机制的方法&/b&&/p&&p&基本思路:人的注意力是可以利用以往的经验来实现提升的,比如&b&我们看一个性感图片,我们会很自然的把注意力集中在关键位置&/b&。那么,能不能利用以往的任务来训练一个Attention模型,从而面对新的任务,能够直接关注最重要的部分。&/p&&p&代表文章:&/p&&p&[1] Vinyals, Oriol, Blundell, Charles, Lillicrap, Tim, Wierstra, Daan, et al. &b&Matching networks for one shot learning&/b&. In Advances in Neural Information Processing Systems, pp. , 2016.&/p&&p&&br&&/p&&img data-rawheight=&926& src=&/v2-1fb6d7116e07bfba289ffd_b.png& data-rawwidth=&1482& class=&origin_image zh-lightbox-thumb& width=&1482& data-original=&/v2-1fb6d7116e07bfba289ffd_r.png&&&p&这篇文章构造一个attention机制,也就是最后的label判断是通过attention的叠加得到的:&/p&&p&&img src=&/equation?tex=%5Cbar%7By%7D+%3D+%5Csum_%7Bi%3D1%7D%5E%7Bk%7D%7Ba%28%5Cbar%7Bx%7D%2Cx_i%29%7Dy_i+& alt=&\bar{y} = \sum_{i=1}^{k}{a(\bar{x},x_i)}y_i & eeimg=&1&&&/p&&p&attention a则通过g和f得到。基本目的就是利用已有任务训练出一个好的attention model。&/p&&p&&br&&/p&&p&&b&2.4 借鉴LSTM的方法&/b&&/p&&p&基本思路:LSTM内部的更新非常类似于梯度下降的更新,那么,能否利用LSTM的结构训练出一个神经网络的更新机制,输入当前网络参数,直接输出新的更新参数?这个想法非常巧妙。&/p&&p&代表文章:&/p&&p&[1] Ravi, Sachin and Larochelle, Hugo. &b&Optimization as a model for few-shot learning&/b&. In International Conference on Learning Representations (ICLR), 2017.&/p&&p&&br&&/p&&img data-rawheight=&574& src=&/v2-bed4bb3342dee1af5c0e_b.png& data-rawwidth=&1608& class=&origin_image zh-lightbox-thumb& width=&1608& data-original=&/v2-bed4bb3342dee1af5c0e_r.png&&&p&这篇文章的核心思想是下面这一段:&/p&&img data-rawheight=&504& src=&/v2-1bb24f764fd47ada170243_b.png& data-rawwidth=&1680& class=&origin_image zh-lightbox-thumb& width=&1680& data-original=&/v2-1bb24f764fd47ada170243_r.png&&&p&怎么把LSTM的更新和梯度下降联系起来才是更值得思考的问题吧。&/p&&p&&br&&/p&&p&&b&2.5 面向RL的Meta Learning方法&/b&&/p&&p&基本思路:既然Meta Learning可以用在监督学习,那么增强学习上又可以怎么做呢?能否通过增加一些外部信息的输入比如reward,之前的action来实现?&/p&&p&代表文章:&/p&&p&[1] Wang J X, Kurth-Nelson Z, Tirumala D, et al. &b&Learning to reinforcement learn&/b&. arXiv preprint arXiv:, 2016.&/p&&p&[2] Y. Duan, J. Schulman, X. Chen, P. Bartlett, I. Sutskever, and P. Abbeel. &b&Rl2: Fast reinforcement learning via slow reinforcement learning&/b&. Technical report, UC Berkeley and OpenAI, 2016.&/p&&p&两篇文章思路一致,就是额外增加reward和之前action的输入,从而强制让神经网络学习一些任务级别的信息:&/p&&p&&br&&/p&&img data-rawheight=&722& src=&/v2-b27c37fe7ac1_b.png& data-rawwidth=&1698& class=&origin_image zh-lightbox-thumb& width=&1698& data-original=&/v2-b27c37fe7ac1_r.png&&&p&&br&&/p&&p&&b&2.6 通过训练一个好的base model的方法,并且同时应用到监督学习和增强学习&/b&&/p&&p&基本思路:之前的方法都只能局限在或者监督学习或者增强学习上,能不能搞个更通用的呢?是不是相比finetune学习一个更好的base model就能work?&/p&&p&代表文章:&/p&&p&[1] Finn, C., Abbeel, P., & Levine, S. (2017). &b&Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks&/b&. arXiv preprint arXiv:.&/p&&p&&br&&/p&&img data-rawheight=&478& src=&/v2-c190d5bcaff_b.png& data-rawwidth=&1070& class=&origin_image zh-lightbox-thumb& width=&1070& data-original=&/v2-c190d5bcaff_r.png&&&p&这篇文章的基本思路是同时启动多个任务,然后获取不同任务学习的合成梯度方向来更新,从而学习一个共同的最佳base。&/p&&p&&br&&/p&&p&&b&2.7 利用WaveNet的方法&/b&&/p&&p&基本思路:WaveNet的网络每次都利用了之前的数据,那么是否可以照搬WaveNet的方式来实现Meta Learning呢?就是充分利用以往的数据呀?&/p&&p&代表文章:&/p&&p&[1] Mishra N, Rohaninejad M, Chen X, et al. &b&Meta-Learning with Temporal Convolutions&/b&. arXiv preprint arXiv:, 2017.&/p&&p&&br&&/p&&img data-rawheight=&536& src=&/v2-79a1bc32dacf6_b.png& data-rawwidth=&1256& class=&origin_image zh-lightbox-thumb& width=&1256& data-original=&/v2-79a1bc32dacf6_r.png&&&p&直接利用之前的历史数据,思路极其简单,效果极其之好,是目前omniglot,mini imagenet图像识别的state-of-the-art。&/p&&p&&br&&/p&&p&&b&2.8 预测Loss的方法&/b&&/p&&p&基本思路:要让学习的速度更快,除了更好的梯度,如果有更好的loss,那么学习的速度也会更快,因此,是不是可以构造一个模型利用以往的任务来学习如何预测Loss呢?&/p&&p&代表文章:&/p&&p&[1] &b&Flood Sung&/b&, Zhang L, Xiang T, Hospedales T, et al. &b&Learning to Learn: Meta-Critic Networks for Sample Efficient Learning&/b&. arXiv preprint arXiv:, 2017.&/p&&p&&br&&/p&&img data-rawheight=&498& src=&/v2-0ccac1a10a06f57b4ac1c33a16e9d616_b.png& data-rawwidth=&1262& class=&origin_image zh-lightbox-thumb& width=&1262& data-original=&/v2-0ccac1a10a06f57b4ac1c33a16e9d616_r.png&&&p&本文构造了一个Meta-Critic Network(包含Meta Value Network和Task-Actor Encoder)来学习预测Actor Network的Loss。对于Reinforcement Learning而言,这个Loss就是Q Value。&/p&&p&本文详细分析详见:&a href=&/p/& class=&internal&&学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习&/a&&/p&&p&本文 纽约大学的&u&&b&&a href=&/?target=https%3A///kchonyc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kyunghyun Cho&i class=&icon-external&&&/i&&/a&&/b&&/u& &u& 做了评价:&/u&&/p&&img data-rawheight=&322& src=&/v2-1dfc2d63f819d23b383c_b.png& data-rawwidth=&1298& class=&origin_image zh-lightbox-thumb& width=&1298& data-original=&/v2-1dfc2d63f819d23b383c_r.png&&&p&也算是一种全新的思路。&/p&&h2&3 小结&/h2&&p&从上面的分析可以看出,Meta Learning方兴未艾,各种神奇的idea层出不穷,但是真正的杀手级算法还未出现,非常期待未来的发展!也希望更多的朋友们可以投入到Meta Learning这个研究方向上来。&/p&
1 前言Meta Learning 元学习或者叫做 Learning to Learn 学会学习 已经成为继Reinforcement Learning 增强学习之后又一个重要的研究分支(以后仅称为Meta Learning)。对于人工智能的理论研究,呈现出了Artificial Intelligence --& Machine Learning --& D…
&p&谢邀。&/p&&p&针对这个问题,我们邀请了微软亚洲研究院首席研究员&b&周明博士&/b&为大家解答。&/p&&img src=&/v2-ce3dfb713ac3d3111ca7db_b.png& data-rawwidth=&191& data-rawheight=&191& class=&content_image& width=&191&&&p&周明博士于2016年12月当选为全球计算语言学和自然语言处理研究领域最具影响力的学术组织——计算语言学协会(ACL, Association for Computational Linguistics)的新一届候任主席。此外,他还是中国计算机学会中文信息技术专委会主任、中国中文信息学会常务理事、哈工大、天津大学、南开大学、山东大学等多所学校博士导师。他1985年毕业于重庆大学,1991年获哈工大博士学位。年清华大学博士后,随后留校任副教授。访问日本高电社公司主持中日机器翻译研究。他是中国第一个中英翻译系统、日本最有名的中日机器翻译产品J-北京的发明人。1999年加入微软研究院并随后负责自然语言研究组,主持研制了微软输入法、对联、英库词典、中英翻译等著名系统。近年来与微软产品组合作开发了小冰(中国)、Rinna(日本)等聊天机器人系统。他发表了100余篇重要会议和期刊论文。拥有国际发明专利40余项。&/p&&br&&p&————这里是正式回答的分割线————&/p&&br&&p&自然语言处理(简称NLP),是研究计算机处理人类语言的一门技术,包括:&/p&&p&1.&b&句法语义分析&/b&:对于给定的句子,进行分词、词性标记、命名实体识别和链接、句法分析、语义角色识别和多义词消歧。&/p&&p&2.&b&信息抽取&/b&:从给定文本中抽取重要的信息,比如,时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。涉及到实体识别、时间抽取、因果关系抽取等关键技术。&/p&&p&3.&b&文本挖掘&/b&(或者文本数据挖掘):包括文本聚类、分类、信息抽取、摘要、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。&/p&&p&4.&b&机器翻译&/b&:把输入的源语言文本通过自动翻译获得另外一种语言的文本。根据输入媒介不同,可以细分为文本翻译、语音翻译、手语翻译、图形翻译等。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。&/p&&p&5.&b&信息检索&/b&:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可利用1,2,3的技术来建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。&/p&&p&6.&b&问答系统&/b&: 对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。&/p&&p&7.&b&对话系统&/b&:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。同时,为了体现个性化,要开发用户画像以及基于用户画像的个性化回复。&/p&&p&随着深度学习在图像识别、语音识别领域的大放异彩,人们对深度学习在NLP的价值也寄予厚望。再加上AlphaGo的成功,人工智能的研究和应用变得炙手可热。自然语言处理作为人工智能领域的认知智能,成为目前大家关注的焦点。很多研究生都在进入自然语言领域,寄望未来在人工智能方向大展身手。但是,大家常常遇到一些问题。俗话说,万事开头难。如果第一件事情成功了,学生就能建立信心,找到窍门,今后越做越好。否则,也可能就灰心丧气,甚至离开这个领域。这里针对给出我个人的建议,希望我的这些粗浅观点能够引起大家更深层次的讨论。&/p&&p&&b&建议1:如何在NLP领域快速学会第一个技能?&/b&&/p&&p&我的建议是:找到一个开源项目,比如机器翻译或者深度学习的项目。理解开源项目的任务,编译通过该项目发布的示范程序,得到与项目示范程序一致的结果。然后再深入理解开源项目示范程序的算法。自己编程实现一下这个示范程序的算法。再按照项目提供的标准测试集测试自己实现的程序。如果输出的结果与项目中出现的结果不一致,就要仔细查验自己的程序,反复修改,直到结果与示范程序基本一致。如果还是不行,就大胆给项目的作者写信请教。在此基础上,再看看自己能否进一步完善算法或者实现,取得比示范程序更好的结果。&/p&&p&&b&建议2:如何选择第一个好题目?&/b&&/p&&p&工程型研究生,选题很多都是老师给定的。需要采取比较实用的方法,扎扎实实地动手实现。可能不需要多少理论创新,但是需要较强的实现能力和综合创新能力。而学术型研究生需要取得一流的研究成果,因此选题需要有一定的创新。我这里给出如下的几点建议。&/p&&ul&&li&先找到自己喜欢的研究领域。你找到一本最近的ACL会议论文集, 从中找到一个你比较喜欢的领域。在选题的时候,多注意选择蓝海的领域。这是因为蓝海的领域,相对比较新,容易出成果。&/li&&li&充分调研这个领域目前的发展状况。包括如下几个方面的调研:方法方面,是否有一套比较清晰的数学体系和机器学习体系;数据方面,有没有一个大家公认的标准训练集和测试集;研究团队,是否有著名团队和人士参加。如果以上几个方面的调研结论不是太清晰,作为初学者可能不要轻易进入。&/li&&li&在确认进入一个领域之后,按照建议一所述,需要找到本领域的开源项目或者工具,仔细研究一遍现有的主要流派和方法,先入门。&/li&&li&反复阅读本领域最新发表的文章,多阅读本领域牛人发表的文章。在深入了解已有工作的基础上,探讨还有没有一些地方可以推翻、改进、综合、迁移。注意做实验的时候,不要贪多,每次实验只需要验证一个想法。每次实验之后,必须要进行分析存在的错误,找出原因。&/li&&li&对成功的实验,进一步探讨如何改进算法。注意实验数据必须是业界公认的数据。&/li&&li&与已有的算法进行比较,体会能够得出比较一般性的结论。如果有,则去写一篇文章,否则,应该换一个新的选题。&/li&&/ul&&p&&b&建议3:如何写出第一篇论文?&/b&&/p&&ul&&li&接上一个问题,如果想法不错,且被实验所证明,就可开始写第一篇论文了。&/li&&li&确定论文的题目。在定题目的时候,一般不要“…系统”、“…研究与实践”,要避免太长的题目,因为不好体现要点。题目要具体,有深度,突出算法。&/li&&li&写论文摘要。要突出本文针对什么重要问题,提出了什么方法,跟已有工作相比,具有什么优势。实验结果表明,达到了什么水准,解决了什么问题。&/li&&li&写引言。首先讲出本项工作的背景,这个问题的定义,它具有什么重要性。然后介绍对这个问题,现有的方法是什么,有什么优点。但是(注意但是)现有的方法仍然有很多缺陷或者挑战。比如(注意比如),有什么问题。本文针对这个问题,受什么方法(谁的工作)之启发,提出了什么新的方法并做了如下几个方面的研究。然后对每个方面分门别类加以叙述,最后说明实验的结论。再说本文有几条贡献,一般写三条足矣。然后说说文章的章节组织,以及本文的重点。有的时候东西太多,篇幅有限,只能介绍最重要的部分,不需要面面俱到。&/li&&li&相关工作。对相关工作做一个梳理,按照流派划分,对主要的最多三个流派做一个简单介绍。介绍其原理,然后说明其局限性。&/li&&li&然后可设立两个章节介绍自己的工作。第一个章节是算法描述。包括问题定义,数学符号,算法描述。文章的主要公式基本都在这里。有时候要给出简明的推导过程。如果借鉴了别人的理论和算法,要给出清晰的引文信息。在此基础上,由于一般是基于机器学习或者深度学习的方法,要介绍你的模型训练方法和解码方法。第二章就是实验环节。一般要给出实验的目的,要检验什么,实验的方法,数据从哪里来,多大规模。最好数据是用公开评测数据,便于别人重复你的工作。然后对每个实验给出所需的技术参数,并报告实验结果。同时为了与已有工作比较,需要引用已有工作的结果,必要的时候需要重现重要的工作并报告结果。用实验数据说话,说明你比人家的方法要好。要对实验结果好好分析你的工作与别人的工作的不同及各自利弊,并说明其原因。对于目前尚不太好的地方,要分析问题之所在,并将其列为未来的工作。&/li&&li&结论。对本文的贡献再一次总结。既要从理论、方法上加以总结和提炼,也要说明在实验上的贡献和结论。所做的结论,要让读者感到信服,同时指出未来的研究方向。&/li&&li&参考文献。给出所有重要相关工作的论文。记住,漏掉了一篇重要的参考文献(或者牛人的工作),基本上就没有被录取的希望了。&/li&&li&写完第一稿,然后就是再改三遍。&/li&&li&把文章交给同一个项目组的人士,请他们从算法新颖度、创新性和实验规模和结论方面,以挑剔的眼光,审核你的文章。自己针对薄弱环节,进一步改进,重点加强算法深度和工作创新性。&/li&&li&然后请不同项目组的人士审阅。如果他们看不明白,说明文章的可读性不够。你需要修改篇章结构、进行文字润色,增加文章可读性。&/li&&li&如投ACL等国际会议,最好再请英文专业或者母语人士提炼文字。&/li&&/ul&&br&&p&————这里是回答结束的分割线————&/p&&br&&p&感谢大家的阅读。&/p&&p&本帐号为微软亚洲研究院的官方知乎帐号。本帐号立足于计算机领域,特别是人工智能相关的前沿研究,旨在为人工智能的相关研究提供范例,从专业的角度促进公众对人工智能的理解,并为研究人员提供讨论和参与的开放平台,从而共建计算机领域的未来。&/p&&p&微软亚洲研究院的每一位专家都是我们的智囊团,你在这个帐号可以阅读到来自计算机科学领域各个不同方向的专家们的见解。请大家不要吝惜手里的“邀请”,让我们在分享中共同进步。&/p&
谢邀。针对这个问题,我们邀请了微软亚洲研究院首席研究员周明博士为大家解答。周明博士于2016年12月当选为全球计算语言学和自然语言处理研究领域最具影响力的学术组织——计算语言学协会(ACL, Association for Computational Linguistics)的新一届候任…
&img src=&/v2-3b89dcfb00_b.jpg& data-rawwidth=&1024& data-rawheight=&780& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/v2-3b89dcfb00_r.jpg&&&p&最近看到一种“新”算法(其实早就发布并且广泛应用在工业界了,只不过我作为一个Infra Engineer比较后知后觉): Factorization Machine。援引作者原话:&/p&&blockquote&... We introduce Factorization Machines (FM) which are a new model class that combines the advantages of Support Vector Machines (SVM) with factorization models ... In contrast to SVMs, FMs model all interactions between variables using factorized parameters. Thus they are able to estimate interactions even in problems with huge&br&sparsity (like recommender systems) where SVMs fail...&/blockquote&&p&&b&TL;DR&/b&,按我个人的理解就是:&/p&&ol&&li&这是一种新的模型类型,可以用作任意Real-Value Vector的分类,跟LR/SVM一样&/li&&li&它可以拿来对不同变量之间的Interaction建模(比如不同Feature之间的相关性),这点跟带kernel的SVM类似;它胜过LR的也是这点,因为LR只是一个线性模型&/li&&li&它胜过SVM的地方在于,它使用了&factorization&(简单来说,理解为矩阵分解?)来进行建模,这就使得它可以用于非常稀疏的Features,而SVM更适合用于Dense Feature,在Sparse Feature上表现并不好&/li&&/ol&&p&下面进入技术细节&/p&&p&&br&&/p&&h2&模型结构&/h2&&p&我们先从Logistic Regression出发,回顾一下LR的Score Function&/p&&p&&img src=&/equation?tex=y%28X%29+%3D+w_0+%2B+%5Csum_i%5EN+w_i+X_i& alt=&y(X) = w_0 + \sum_i^N w_i X_i& eeimg=&1&&&/p&&p&基本就是一个线性模型,对输入Feautre X的每一个纬度有一个参数w_i。好处是非常简单,非常容易Scale Up,得到的泛化能力一般都还挺不错,因此在工业界得到广泛应用;坏处就是建模能力有限,毕竟只是一个线性模型。&/p&&p&&br&&/p&&p&那么,下面是FM的Score Function &/p&&p&&img src=&/equation?tex=y%28X%29+%3D+w_0+%2B+%5Csum_i%5EN+w_i+X_i+%2B+%5Csum_i+%5Csum_j+%5Cbig+%5Clangle+v_i%2C+v_j+%5Cbig+%5Crangle+X_i+X_j& alt=&y(X) = w_0 + \sum_i^N w_i X_i + \sum_i \sum_j \big \langle v_i, v_j \big \rangle X_i X_j& eeimg=&1&&&/p&&p&这里只是二阶的情况(二阶的意思是对变量两两之间关系建模,三阶或更高就是对三个或更多个变量之间的关系进行建模),也是一般实际场景所用的模型。可以看到,跟LR相比,多出来一项是 &img src=&/equation?tex=%5Clangle+v_i%2C+v_j+%5Crangle+X_i+X_j& alt=&\langle v_i, v_j \rangle X_i X_j& eeimg=&1&& ,其中 &img src=&/equation?tex=v_i& alt=&v_i& eeimg=&1&& 是参数矩阵 &img src=&/equation?tex=V+& alt=&V & eeimg=&1&& 中的一行,而V是一个 N x k 的矩阵。也就是说,对X中的每一个变量,我们会用一个k维的向量(记住是一个向量,这很重要,后面会提到为什么)来建模,然后每两个变量之间的Interaction,就用这两个k维向量的内积来模拟。&/p&&p&&br&&/p&&h2&Scalability&/h2&&p&前面讲到LR的优势之一是非常Scalable,所以在工业界得到广泛应用——工业界一般有大量数据,但是计算资源有限啊,而且对实时性要求非常高,所以很多很酷炫,理论效果很好的模型反而得不到重用,就是因为Scalability的问题。前面看到,LR是线性的,基本是O(N)的复杂度;FM加了一个新的项之后,新加的那项看起来似乎需要 &img src=&/equation?tex=O%28N%5E2%29& alt=&O(N^2)& eeimg=&1&& 的复杂度,这似乎是不可忍受的复杂度,那为什么FM还能得到广泛应用呢?&/p&&p&主要原因就是,原作者通过一个数学Trick,把新加项的计算复杂度降到了O(kN) (k是可以自己选择的参数,一般会远远远远小于N,所以基本就相当于O(N)了)。直接上原论文的图,不感兴趣的可以跳过:&/p&&p&&br&&/p&&img src=&/v2-f2f95f38c909f993cbc5c6ef14cb77d3_b.png& data-rawwidth=&670& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&670& data-original=&/v2-f2f95f38c909f993cbc5c6ef14cb77d3_r.png&&&p&得到这个牛逼的公式之后就可以直接上梯度下降了:)&/p&&p&&br&&/p&&h2&深究与SVM的优劣——为什么这个方法在Sparse Data下可以Work?&/h2&&p&我们把上面FM的Score Function和一个带有多项式Kernel(Degree=2)的SVM比较。我们知道,简化来看,带Kernel的SVM可以看作先把输入X投影到另外一个特征空间,再做线性分类的算法。一个二项式kernel的SVM,相当于对输入Feature做了如下的变换:&/p&&p&&br&&/p&&img src=&/v2-6eccc4bdd3f06_b.png& data-rawwidth=&640& data-rawheight=&114& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-6eccc4bdd3f06_r.png&&&p&&br&&/p&&p&那么Score Function就是:&/p&&p&&br&&/p&&img src=&/v2-eeb300fc473d34a0ff601_b.png& data-rawwidth=&694& data-rawheight=&176& class=&origin_image zh-lightbox-thumb& width=&694& data-original=&/v2-eeb300fc473d34a0ff601_r.png&&&p&可以看到基本上最大的区别就在于模拟变量两两Interaction的一项:在SVM里面,对x_i 和x_j的Interaction,以及x_i和x_k之间的interaction的建模,也就是 &img src=&/equation?tex=w_%7Bij%7D& alt=&w_{ij}& eeimg=&1&& 和 &img src=&/equation?tex=w_%7Bik%7D& alt=&w_{ik}& eeimg=&1&& ,是相互独立的参数;但是在FM里面,这两者互不独立,因为 &img src=&/equation?tex=%5Clangle+v_i%2C+v_j+%5Crangle& alt=&\langle v_i, v_j \rangle& eeimg=&1&& 和 &img src=&/equation?tex=%5Clangle+v_i%2C+v_j+%5Crangle& alt=&\langle v_i, v_j \rangle& eeimg=&1&& 都依赖于 &img src=&/equation?tex=v_i& alt=&v_i& eeimg=&1&& 。这点看似减少了模型的自由度,但是Sparse Feature的情况下发挥出了巨大的作用(&b&以下为个人理解&/b&):&/p&&p&&br&&/p&&p&对于SVM来说, &img src=&/equation?tex=w_%7Bij%7D& alt=&w_{ij}& eeimg=&1&& 必须在有足够多的满足 &img src=&/equation?tex=x_i+%5Cneq+0%2C+x_j+%5Cneq+0+& alt=&x_i \neq 0, x_j \neq 0 & eeimg=&1&& 样本存在的情况下,才能得到很好的训练。但是在输入稀疏的情况下,在输入特征X里面大部分的 &img src=&/equation?tex=x_i& alt=&x_i& eeimg=&1&& 值都是0,更不必提 &img src=&/equation?tex=x_i%2Cx_j& alt=&x_i,x_j& eeimg=&1&& 同时不为0了。所以SVM在这种情况下不能得到很好的训练。&/p&&p&反观FM,尽管要训练 &img src=&/equation?tex=v_i%2C& alt=&v_i,& eeimg=&1&& 也依赖于 &img src=&/equation?tex=x_i+%5Cneq+0& alt=&x_i \neq 0& eeimg=&1&& ,但是好处是,所有其他非0的&img src=&/equation?tex=x_%7Bj+%5Bj%5Cneq+i%5D%7D& alt=&x_{j [j\neq i]}& eeimg=&1&& 都会成为梯度的一部分,这样对于 &img src=&/equation?tex=v_i& alt=&v_i& eeimg=&1&& 的训练就有明显更多的训练数据,可以更好地训练出合适的参数。&/p&&p&&br&&/p&&p&同样的道理,我们平常在工业界里面常常采用的N-Gram Logistic Regression (人为对输入特征对二项式的变换,再把得到之后的特征拿LR进行训练),也由于同样的问题,无法和FM在效果上媲美。&/p&&p&&br&&/p&&p&值得注意的是,这个特性是FM是优势也是它的弊病。在输入特征比较稠密的情况下,其实FM的效果应该是并不如SVM的,因为SVM的模型自由度更高。&/p&&p&&br&&/p&&h2&总结&/h2&&p&FM作为一个通用的模型,在Scalability上可以和LR媲美,又可以拿来对变量之间的Interaction建模,在工业界中被广泛应用于推荐系统,但理论上也可以应用于一般的分类问题。&/p&&p&&br&&/p&&p&PS: 封面图是差分机,原因是个人内心独白把Factorization Machine翻译成“拆分机”。。。&/p&
最近看到一种“新”算法(其实早就发布并且广泛应用在工业界了,只不过我作为一个Infra Engineer比较后知后觉): Factorization Machine。援引作者原话:... We introduce Factorization Machines (FM) which are a new model class that combines the adva…
&img src=&/v2-b4eb7b53bd7dc2d9be0c6a390e144d5f_b.png& data-rawwidth=&2000& data-rawheight=&1003& class=&origin_image zh-lightbox-thumb& width=&2000& data-original=&/v2-b4eb7b53bd7dc2d9be0c6a390e144d5f_r.png&&&p&这是我十多年来较有突破性的研究成果,不过暂时还未有实验代码,因为要试验这个 architecture 似乎最简单也需要一个自然语言的 Q&A 实验环境。 欢迎批评、意见,或有兴趣的可以合作。&/p&&p&PDF 版本可以在此下载:&/p&&p&&a href=&/?target=https%3A///Cybernetic1/latex-2017/raw/master/introspection.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Cybernetic1/&/span&&span class=&invisible&&latex-2017/raw/master/introspection.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&img src=&/v2-6c30fb02de661f090af72da_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-6c30fb02de661f090af72da_r.png&&&p&&br&&/p&&img src=&/v2-40d0aa5a08d7e3a0c2ceabcd8695422e_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-40d0aa5a08d7e3a0c2ceabcd8695422e_r.png&&&p&&br&&/p&&img src=&/v2-582e937bb81_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-582e937bb81_r.png&&&p&&br&&/p&&img src=&/v2-dac4c3eea7ba12f464cf11_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-dac4c3eea7ba12f464cf11_r.png&&&p&&br&&/p&&img src=&/v2-d7a429ccc60dbb5e3ad621e_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-d7a429ccc60dbb5e3ad621e_r.png&&&p&&br&&/p&&img src=&/v2-b0b2bbf6f2c9cf7082c20_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-b0b2bbf6f2c9cf7082c20_r.png&&&p&&br&&/p&&img src=&/v2-7f1de6be33ddfee4085234f_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-7f1de6be33ddfee4085234f_r.png&&&p&&br&&/p&&img src=&/v2-b8d0e398f3e9b0fc68c8_b.png& data-rawwidth=&3969& data-rawheight=&5613& class=&origin_image zh-lightbox-thumb& width=&3969& data-original=&/v2-b8d0e398f3e9b0fc68c8_r.png&&&p&&/p&
这是我十多年来较有突破性的研究成果,不过暂时还未有实验代码,因为要试验这个 architecture 似乎最简单也需要一个自然语言的 Q&A 实验环境。 欢迎批评、意见,或有兴趣的可以合作。PDF 版本可以在此下载:
&img src=&/v2-c6cdebdeb07fe1e8a80c44a_b.jpg& data-rawwidth=&1280& data-rawheight=&416& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/v2-c6cdebdeb07fe1e8a80c44a_r.jpg&&&p&本文是集智俱乐部小仙女所整理的资源,下面为原文。文末有下载链接。&/p&&p&本文收集了大量&b&基于 PyTorch 实现的代码链接,&/b&其中有适用于深度学习新手的“入门指导系列”,也有适用于老司机的论文代码实现,包括 Attention Based CNN、A3C、WGAN等等。&b&所有代码均按照所属技术领域分类,&/b&包括机器视觉/图像相关、自然语言处理相关、强化学习相关等等。所以如果你打算入手这风行一世的 PyTorch 技术,那么就快快收藏本文吧!&/p&&h2&&b&PyTorch 是什么?&/b&&/h2&&p&PyTorch即 Torch 的 Python 版本。Torch 是由 Facebook 发布的深度学习框架,因支持动态定义计算图,相比于 Tensorflow 使用起来更为灵活方便,特别适合中小型机器学习项目和深度学习初学者。但因为 Torch 的开发语言是Lua,导致它在国内一直很小众。所以,在千呼万唤下,PyTorch应运而生!PyTorch 继承了 Troch 的灵活特性,又使用广为流行的 Python 作为开发语言,所以一经推出就广受欢迎!&/p&&p&&br&&/p&&h2&&b&目录:&/b&&/h2&&ol&&li&&b&入门系列教程&/b&&/li&&li&&b&入门实例&/b&&/li&&li&&b&图像、视觉、CNN相关实现&/b&&/li&&li&&b&对抗生成网络、生成模型、GAN相关实现&/b&&/li&&li&&b&机器翻译、问答系统、NLP相关实现&/b&&/li&&li&&b&先进视觉推理系统&/b&&/li&&li&&b&深度强化学习相关实现&/b&&/li&&li&&b&通用神经网络高级应用&/b&&/li&&/ol&&p&&br&&/p&&h2&&b&入门系列教程&/b&&/h2&&p&&b&1.&/b&PyTorch Tutorials&/p&&p&&a href=&/?target=https%3A///MorvanZhou/PyTorch-Tutorial.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/MorvanZhou/P&/span&&span class=&invisible&&yTorch-Tutorial.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&著名的“莫烦”PyTorch系列教程的源码。&/p&&p&&br&&/p&&p&&b&2.Deep Learning with PyTorch: a 60-minute blitz&/b&&/p&&p&&a href=&/?target=http%3A//pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&pytorch.org/tutorials/b&/span&&span class=&invisible&&eginner/deep_learning_60min_blitz.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&PyTorch官网推荐的由网友提供的60分钟教程,本系列教程的重点在于介绍PyTorch的基本原理,包括自动求导,神经网络,以及误差优化API。&/p&&p&&br&&/p&&p&&b&3.Simple examples to introduce PyTorch&/b&&/p&&p&&a href=&/?target=https%3A///jcjohnson/pytorch-examples.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/jcjohnson/py&/span&&span class=&invisible&&torch-examples.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&由网友提供的PyTorch教程,通过一些实例的方式,讲解PyTorch的基本原理。内容涉及Numpy、自动求导、参数优化、权重共享等。&/p&&p&&br&&/p&&h2&&b&入门实例&/b&&/h2&&p&&b&1.Ten minutes pyTorch Tutorial&/b&&/p&&p&&a href=&/?target=https%3A///SherlockLiao/pytorch-beginner.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/SherlockLiao&/span&&span class=&invisible&&/pytorch-beginner.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&知乎上“十分钟学习PyTorch“系列教程的源码。&/p&&p&&br&&/p&&p&&b&2.Official PyTorch Examples&/b&&/p&&p&&a href=&/?target=https%3A///pytorch/examples& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/pytorch/exam&/span&&span class=&invisible&&ples&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&官方提供的实例源码,包括以下内容:&/p&&ul&&li&MNIST Convnets&/li&&li&Word level Language Modeling using LSTM RNNs&/li&&li&Training Imagenet Classifiers with Residual Networks&/li&&li&Generative Adversarial Networks (DCGAN)&/li&&li&Variational Auto-Encoders&/li&&li&Superresolution using an efficient sub-pixel convolutional neural network&/li&&li&Hogwild training of shared ConvNets across multiple processes on MNIST&/li&&li&Training a CartPole to balance in OpenAI Gym with actor-critic&/li&&li&Natural Language Inference (SNLI) with GloVe vectors, LSTMs, and torchtext&/li&&li&Time sequence prediction - create an LSTM to learn Sine waves&/li&&/ul&&p&&br&&/p&&p&&b&3.PyTorch Tutorial for Deep Learning Researchers&/b&&/p&&p&&a href=&/?target=https%3A///yunjey/pytorch-tutorial.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/yunjey/pytor&/span&&span class=&invisible&&ch-tutorial.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&据说是提供给深度学习科研者们的PyTorch教程←_←。教程中的每个实例的代码都控制在30行左右,简单易懂,内容如下:&/p&&ul&&li&PyTorch Basics&/li&&li&Linear Regression&/li&&li&Logistic Regression&/li&&li&Feedforward Neural Network&/li&&li&Convolutional Neural Network&/li&&li&Deep Residual Network&/li&&li&Recurrent Neural Network&/li&&li&Bidirectional Recurrent Neural Network&/li&&li&Language Model (RNN-LM)&/li&&li&Generative Adversarial Network&/li&&li&Image Captioning (CNN-RNN)&/li&&li&Deep Convolutional GAN (DCGAN)&/li&&li&Variational Auto-Encoder&/li&&li&Neural Style Transfer&/li&&li&TensorBoard in PyTorch&/li&&/ul&&p&&br&&/p&&p&&b&4.PyTorch-playground&/b&&/p&&p&&a href=&/?target=https%3A///aaron-xichen/pytorch-playground.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/aaron-xichen&/span&&span class=&invisible&&/pytorch-playground.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&PyTorch初学者的Playground,在这里针对一下常用的数据集,已经写好了一些模型,所以大家可以直接拿过来玩玩看,目前支持以下数据集的模型。&/p&&ul&&li&mnist, svhn&/li&&li&cifar10, cifar100&/li&&li&stl10&/li&&li&alexnet&/li&&li&vgg16, vgg16_bn, vgg19, vgg19_bn&/li&&li&resnet18, resnet34, resnet50, resnet101, resnet152&/li&&li&squeezenet_v0, squeezenet_v1&/li&&li&inception_v3&/li&&/ul&&p&&br&&/p&&h2&&b&图像、视觉、CNN相关实现&/b&&/h2&&p&&b&1.PyTorch-FCN&/b&&/p&&p&&a href=&/?target=https%3A///wkentaro/pytorch-fcn.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/wkentaro/pyt&/span&&span class=&invisible&&orch-fcn.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&FCN(Fully Convolutional Networks implemented) 的PyTorch实现。&/p&&p&&br&&/p&&p&&b&2.Attention Transfer&/b&&/p&&p&&a href=&/?target=https%3A///szagoruyko/attention-transfer.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/szagoruyko/a&/span&&span class=&invisible&&ttention-transfer.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&论文 &Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer& 的PyTorch实现。&/p&&p&&br&&/p&&p&&b&3.Wide ResNet model in PyTorch&/b&&/p&&p&&a href=&/?target=https%3A///szagoruyko/functional-zoo.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/szagoruyko/f&/span&&span class=&invisible&&unctional-zoo.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一个PyTorch实现的 ImageNet Classification 。&/p&&p&&br&&/p&&p&&b&4.CRNN for image-based sequence recognition&/b&&/p&&p&&a href=&/?target=https%3A///bgshih/crnn.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/bgshih/crnn.&/span&&span class=&invisible&&git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&这个是 Convolutional Recurrent Neural Network (CRNN) 的 PyTorch 实现。CRNN 由一些CNN,RNN和CTC组成,常用于基于图像的序列识别任务,例如场景文本识别和OCR。&/p&&p&&br&&/p&&p&&b&5.Scaling the Scattering Transform: Deep Hybrid Networks&/b&&/p&&p&&a href=&/?target=https%3A///edouardoyallon/pyscatwave.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/edouardoyall&/span&&span class=&invisible&&on/pyscatwave.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&使用了“scattering network”的CNN实现,特别的构架提升了网络的效果。&/p&&p&&br&&/p&&p&&b&6.Conditional Similarity Networks (CSNs)&/b&&/p&&p&&a href=&/?target=https%3A///andreasveit/conditional-similarity-networks.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/andreasveit/&/span&&span class=&invisible&&conditional-similarity-networks.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&《Conditional Similarity Networks》的PyTorch实现。&/p&&p&&br&&/p&&p&&b&7.Multi-style Generative Network for Real-time Transfer&/b&&/p&&p&&a href=&/?target=https%3A///zhanghang1989/PyTorch-Style-Transfer.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/zhanghang198&/span&&span class=&invisible&&9/PyTorch-Style-Transfer.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&MSG-Net 以及 Neural Style 的 PyTorch 实现。&/p&&p&&br&&/p&&p&&b&8.Big batch training&/b&&/p&&p&&a href=&/?target=https%3A///eladhoffer/bigBatch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/eladhoffer/b&/span&&span class=&invisible&&igBatch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&《Train longer, generalize better: closing the generalization gap in large batch training of neural networks》的 PyTorch 实现。&/p&&p&&br&&/p&&p&&b&9.CortexNet&/b&&/p&&p&&a href=&/?target=https%3A///e-lab/pytorch-CortexNet.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/e-lab/pytorc&/span&&span class=&invisible&&h-CortexNet.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一个使用视频训练的鲁棒预测深度神经网络。&/p&&p&&br&&/p&&p&&b&10.Neural Message Passing for Quantum Chemistry&/b&&/p&&p&&a href=&/?target=https%3A///priba/nmp_qc.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/priba/nmp_qc&/span&&span class=&invisible&&.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&论文《Neural Message Passing for Quantum Chemistry》的PyTorch实现,好像是讲计算机视觉下的神经信息传递。&/p&&p&&br&&/p&&h2&&b&对抗生成网络、生成模型、GAN相关实现&/b&&/h2&&p&&b&1.Generative Adversarial Networks (GANs) in PyTorch&/b&&/p&&p&&a href=&/?target=https%3A///devnag/pytorch-generative-adversarial-networks.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/devnag/pytor&/span&&span class=&invisible&&ch-generative-adversarial-networks.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一个非常简单的由PyTorch实现的对抗生成网络&/p&&p&&br&&/p&&p&&b&2.DCGAN & WGAN with Pytorch&/b&&/p&&p&&a href=&/?target=https%3A///chenyuntc/pytorch-GAN.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/chenyuntc/py&/span&&span class=&invisible&&torch-GAN.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&由中国网友实现的DCGAN和WGAN,代码很简洁。&/p&&p&&br&&/p&&p&&b&3.Official Code for WGAN&/b&&/p&&p&&a href=&/?target=https%3A///martinarjovsky/WassersteinGAN.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/martinarjovs&/span&&span class=&invisible&&ky/WassersteinGAN.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&WGAN的官方PyTorch实现。&/p&&p&&br&&/p&&p&&b&4.DiscoGAN in PyTorch&/b&&/p&&p&&a href=&/?target=https%3A///carpedm20/DiscoGAN-pytorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/carpedm20/Di&/span&&span class=&invisible&&scoGAN-pytorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&《Learning to Discover Cross-Domain Relations with Generative Adversarial Networks》的 PyTorch 实现。&/p&&p&&br&&/p&&p&&b&5.Adversarial Generator-Encoder Network&/b&&/p&&p&&a href=&/?target=https%3A///DmitryUlyanov/AGE.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/DmitryUlyano&/span&&span class=&invisible&&v/AGE.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&《Adversarial Generator-Encoder Networks》的 PyTorch 实现。&/p&&p&&br&&/p&&p&&b&6.CycleGAN and pix2pix in PyTorch&/b&&/p&&p&&a href=&/?target=https%3A///junyanz/pytorch-CycleGAN-and-pix2pix.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/junyanz/pyto&/span&&span class=&invisible&&rch-CycleGAN-and-pix2pix.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&图到图的翻译,著名的 CycleGAN 以及 pix2pix 的PyTorch 实现。&/p&&p&&br&&/p&&p&&b&7.Weight Normalized GAN&/b&&/p&&p&&a href=&/?target=https%3A///stormraiser/GAN-weight-norm.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/stormraiser/&/span&&span class=&invisible&&GAN-weight-norm.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&《On the Effects of Batch and Weight Normalization in Generative Adversarial Networks》的 PyTorch 实现。&/p&&p&&br&&/p&&h2&&b&机器翻译、问答系统、NLP相关实现&/b&&/h2&&p&&b&1.DeepLearningForNLPInPytorch&/b&&/p&&p&&a href=&/?target=https%3A///rguthrie3/DeepLearningForNLPInPytorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/rguthrie3/De&/span&&span class=&invisible&&epLearningForNLPInPytorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一套以 NLP 为主题的 PyTorch 基础教程。本教程使用Ipython Notebook编写,看起来很直观,方便学习。&/p&&p&&br&&/p&&p&&b&2.Practial Pytorch with Topic RNN & NLP&/b&&/p&&p&&a href=&/?target=https%3A///spro/practical-pytorch& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/spro/practic&/span&&span class=&invisible&&al-pytorch&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&以 RNN for NLP 为出发点的 PyTorch 基础教程,分为“RNNs for NLP”和“RNNs for timeseries data”两个部分。&/p&&p&&br&&/p&&p&&b&3.PyOpenNMT: Open-Source Neural Machine Translation&/b&&/p&&p&&a href=&/?target=https%3A///OpenNMT/OpenNMT-py.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/OpenNMT/Open&/span&&span class=&invisible&&NMT-py.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一套由PyTorch实现的机器翻译系统。&/p&&p&&br&&/p&&p&&b&4.Deal or No Deal? End-to-End Learning for Negotiation Dialogues&/b&&/p&&p&&a href=&/?target=https%3A///facebookresearch/end-to-end-negotiator.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/facebookrese&/span&&span class=&invisible&&arch/end-to-end-negotiator.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Facebook AI Research 论文《Deal or No Deal? End-to-End Learning for Negotiation Dialogues》的 PyTorch 实现。&/p&&p&&br&&/p&&p&&b&5.Attention is all you need: A Pytorch Implementation&/b&&/p&&p&&a href=&/?target=https%3A///jadore801120/attention-is-all-you-need-pytorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/jadore801120&/span&&span class=&invisible&&/attention-is-all-you-need-pytorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Google Research 著名论文《Attention is all you need》的PyTorch实现。&/p&&p&&br&&/p&&p&&b&6.Improved Visual Semantic Embeddings&/b&&/p&&p&&a href=&/?target=https%3A///fartashf/vsepp.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/fartashf/vse&/span&&span class=&invisible&&pp.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一种从图像中检索文字的方法,来自论文:《VSE++: Improved Visual-Semantic Embeddings》。&/p&&p&&br&&/p&&p&&b&7.Reading Wikipedia to Answer Open-Domain Questions&/b&&/p&&p&&a href=&/?target=https%3A///facebookresearch/DrQA.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/facebookrese&/span&&span class=&invisible&&arch/DrQA.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一个开放领域问答系统DrQA的PyTorch实现。&/p&&p&&br&&/p&&p&&b&8.Structured-Self-Attentive-Sentence-Embedding&/b&&/p&&p&&a href=&/?target=https%3A///ExplorerFreda/Structured-Self-Attentive-Sentence-Embedding.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/ExplorerFred&/span&&span class=&invisible&&a/Structured-Self-Attentive-Sentence-Embedding.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&IBM 与 MILA 发表的《A Structured Self-Attentive Sentence Embedding》的开源实现。&/p&&p&&br&&/p&&h2&&b&先进视觉推理系统&/b&&/h2&&p&&b&1.Visual Question Answering in Pytorch&/b&&/p&&p&&a href=&/?target=https%3A///Cadene/vqa.pytorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Cadene/vqa.p&/span&&span class=&invisible&&ytorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一个PyTorch实现的优秀视觉推理问答系统,是基于论文《MUTAN: Multimodal Tucker Fusion for Visual Question Answering》实现的。项目中有详细的配置使用方法说明。&/p&&p&&br&&/p&&p&&b&2.Clevr-IEP&/b&&/p&&p&&a href=&/?target=https%3A///facebookresearch/clevr-iep.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/facebookrese&/span&&span class=&invisible&&arch/clevr-iep.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Facebook Research 论文《Inferring and Executing Programs for Visual Reasoning》的PyTorch实现,讲的是一个可以基于图片进行关系推理问答的网络。&/p&&h2&&b&深度强化学习相关实现&/b&&/h2&&p&&b&1.Deep Reinforcement Learning withpytorch & visdom &/b&&/p&&p&&a href=&/?target=https%3A///onlytailei/pytorch-rl.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/onlytailei/p&/span&&span class=&invisible&&ytorch-rl.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&多种使用PyTorch实现强化学习的方法。&/p&&p&&br&&/p&&p&&b&2.Value Iteration Networks in PyTorch&/b&&/p&&p&&a href=&/?target=https%3A///onlytailei/Value-Iteration-Networks-PyTorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/onlytailei/V&/span&&span class=&invisible&&alue-Iteration-Networks-PyTorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Value Iteration Networks (VIN) 的PyTorch实现。&/p&&p&&br&&/p&&p&&b&3.A3C in PyTorch&/b&&/p&&p&&a href=&/?target=https%3A///onlytailei/A3C-PyTorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/onlytailei/A&/span&&span class=&invisible&&3C-PyTorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&Adavantage async Actor-Critic (A3C) 的PyTorch实现。&/p&&p&&br&&/p&&h2&&b&通用神经网络高级应用&/b&&/h2&&p&&b&1.PyTorch-meta-optimizer&/b&&/p&&p&&a href=&/?target=https%3A///ikostrikov/pytorch-meta-optimizer.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/ikostrikov/p&/span&&span class=&invisible&&ytorch-meta-optimizer.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&论文《Learning to learn by gradient descent by gradient descent》的PyTorch实现。&/p&&p&&br&&/p&&p&&b&2.OptNet: Differentiable Optimization as a Layer in Neural Networks&/b&&/p&&p&&a href=&/?target=https%3A///locuslab/optnet.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/locuslab/opt&/span&&span class=&invisible&&net.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&论文《Differentiable Optimization as a Layer in Neural Networks》的PyTorch实现。&/p&&p&&br&&/p&&p&&b&3.Task-based End-to-end Model Learning&/b&&/p&&p&&a href=&/?target=https%3A///locuslab/e2e-model-learning.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/locuslab/e2e&/span&&span class=&invisible&&-model-learning.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&论文《Task-based End-to-end Model Learning》的PyTorch实现。&/p&&p&&br&&/p&&p&&b&4.DiracNets&/b&&/p&&p&&a href=&/?target=https%3A///szagoruyko/diracnets.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/szagoruyko/d&/span&&span class=&invisible&&iracnets.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&不使用“Skip-Connections”而搭建特别深的神经网络的方法。&/p&&p&&br&&/p&&p&&b&5.ODIN: Out-of-Distribution Detector for Neural Networks&/b& &/p&&p&&a href=&/?target=https%3A///ShiyuLiang/odin-pytorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/ShiyuLiang/o&/span&&span class=&invisible&&din-pytorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&这是一个能够检测“分布不足”(Out-of-Distribution)样本的方法的PyTorch实现。当“true positive rate”为95%时,该方法将DenseNet(适用于CIFAR-10)的“false positive rate”从34.7%降至4.3%。&/p&&p&&br&&/p&&p&&b&6.Accelerate Neural Net Training by Progressively Freezing Layers&/b&&/p&&p&&a href=&/?target=https%3A///ajbrock/FreezeOut.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/ajbrock/Free&/span&&span class=&invisible&&zeOut.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&一种使用“progressively freezing layers”来加速神经网络训练的方法。&/p&&p&&br&&/p&&p&&b&7.Efficient_densenet_pytorch&/b&&/p&&p&&a href=&/?target=https%3A///gpleiss/efficient_densenet_pytorch.git& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/gpleiss/effi&/span&&span class=&invisible&&cient_densenet_pytorch.git&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&DenseNets的PyTorch实现,优化以节省GPU内存。&/p&&p&&br&&/p&&p&&a href=&/?target=http%3A//campus.swarma.org/gapp%3D120& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&资料下载&i class=&icon-external&&&/i&&/a&&/p&&p&&/p&&p&&/p&
本文是集智俱乐部小仙女所整理的资源,下面为原文。文末有下载链接。本文收集了大量基于 PyTorch 实现的代码链接,其中有适用于深度学习新手的“入门指导系列”,也有适用于老司机的论文代码实现,包括 Attention Based CNN、A3C、WGAN等等。所有代码均按照…
作者:seaw&br&链接:&a href=&/p/& class=&internal&&&span class=&invisible&&https://&/span&&span class=&visible&&/p/23&/span&&span class=&invisible&&128483&/span&&span class=&ellipsis&&&/span&&/a&&br&来源:知乎&br&著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。&br&&br&&blockquote&Jonathan Larkin, Chief Investment Officer at Quantopian&br&&a href=&///?target=https%3A///a-professional-quant-equity-workflow/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A Professional Quant Equity Workflow&i class=&icon-external&&&/i&&/a&&/blockquote&构建一个高夏普比率的量化投资策略需要6个步骤:&ol&&li&&b&Data(数据)&/b&&/li&&li&&b&Universe Definition (股票池定义)&/b&&/li&&li&&b&Alpha Discovery(因子探索)&/b&&/li&&li&&b&Alpha Combination(因子组合)&/b&&/li&&li&&b&Portfolio Construction(投资组合构建)&/b&&/li&&li&&b&Trading(交易)&/b&&/li&&/ol&&br&策略的成功需要确保流程的每一步都成功,如下图:&img src=&/v2-530ef74bcb1c4ddbcf59a_b.png& data-rawwidth=&1616& data-rawheight=&1154& class=&origin_image zh-lightbox-thumb& width=&1616& data-original=&/v2-530ef74bcb1c4ddbcf59a_r.png&&&p&流程执行周期可以是每周一次,每天一次,也可以是每分钟一次,甚至每秒一次。&/p&&br&&b&Data(数据)&/b&&br&&br&&p&从事量化的投资者都是数据驱动的,所有的投资行为都是由数据发起。随着大数据技术的发展以及数据服务商提供越来越丰富的服务,我们可以很容易的拿到经过整理的、干净的、结构化的数据。&/p&&p&美国市场,Quantopian作为个人量化平台的先驱,提供了丰富的数据以及用户教育社区。国内市场,除了传统的大智慧、同花顺、新浪财经提供的基础数据服务以外,也有一批新崛起的量化平台提供更多数据服务:&/p&&ul&&li&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ricequant 米筐科技(深圳)&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Joinquant 聚宽(北京)&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&///?target=https%3A//uqer.io/home/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Uqer 优矿-通联数据(上海)&i class=&icon-external&&&/i&&/a&&br&&/li&&/ul&&br&在数据阶段,我们需要思考的问题是,“哪些数据集能够帮我们预测未来的收益?”,也就是说,在挖掘数据的金矿之前,我们先要决定从哪里开始挖!&br&&br&&b&Universe Definition(股票池定义)&/b&&br&&br&&p&Quantopian已经覆盖了8000多只美国股票的历史价格数据,国内的Ricequant等也覆盖了所有的3000多只A股/指数10年的历史价格数据以及财务数据。在开始进入策略研发之前,我们必须从这么多股票中选择出一个大小合适、可供交易的股票池。比如,Quantopian提供了 &a href=&///?target=https%3A///posts/the-q500us-and-q1500us& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Q500US and Q1500US&i class=&icon-external&&&/i&&/a& 这类标准化的股票次供开发者使用,你也可以根据个人偏好自定义股票池。&/p&&p&你可能会问,为什么要限制自己,为什么不直接使用全量的数据?这样做主要是考虑到一些实际的问题,比如最起码我们需要过滤掉缺乏流动性的股票。另外,还有一个不太明显但是很重要的原因:一个成功的cross-sectional(横截面)量化投资策略需要对股票池中价格数据的&b&自相似性&/b&与&b&离散性&/b&之间做出平衡。我们先来看看什么是横截面分析?顾名思义,横截面分析是将一只股票与其所经营的行业进行比较,或直接与同一行业内的某些竞争对手进行比较,以评估绩效和投资机会。那么从数据的角度来看,为了评价体系更加智能和有效,这些股票在某些特征上需要具有一定程度上的一致性,比如把st股和非st股放到一起就不太合适。&/p&&br&&p&在构建股票池的时候,必须特别注意你内在的投资理论,两者需要严格匹配。举两个例子, 如果你想基于“&a href=&///?target=https%3A///abstract%3D0or%2520https%3A//dx.doi.org/10.2139/ssrn.2554010& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&隔夜消息对当天股票回报的影响&i class=&icon-external&&&/i&&/a&”这个理论研发一个策略, 那么首先你需要过滤掉所有的ADR,因为时差的原因导致这套理论在ADR上是行不通的(ADR:美国存托凭证,主要解决非美国企业在美上市问题而存在的一种证券形式)。第二个例子,如果你的策略主要基于财务报表,比如“&a href=&///?target=https%3A///abstract%3D1793364& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&利润异常&i class=&icon-external&&&/i&&/a&”,那么对于无法对这类指标进行有效的测算的股票就应该过滤掉(比如银行股)。&/p&&br&&b&Alpha Discovery(因子探索)&/b&&br&&br&&p&Alpha是一个数学表达式,将它应用与我们选定股票池的横截面时,可以得到一组结果用于预测这些股票未来回报的相对大小。Alpha可以是由直接的评分构成,也可以是一个无量纲数向量。(无量纲化:简单说来就是为了将一些原本不可比的数据变的可比,无量纲化常见的方法包括:标准化方法、指数法、均值化等等)&b&Alphas也通常被称为因子&/b&。&/p&&p&如果使用Quantopian,你可以通过&a href=&///?target=https%3A///tutorials/pipeline& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Pipeline API&i class=&icon-external&&&/i&&/a&学习因子建模。在因子探索阶段,不需要担心真实世界的一些细节问题,比如交易、手续费或者风险。你只需要不停的提出猜想,猜想存在一个因素会导致市场无效,这个因素可以是投资者行为、市场结构、信息不对称或任何其他潜在问题,并看看这个猜想是否具有预测能力。这非常考验脑力,实在提不出任何猜想怎么办?你可以试试用Google搜索“equity market anomalies”。当然更好的办法是访问&a href=&///?target=https%3A///en/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SSRN&i class=&icon-external&&&/i&&/a&,这里有很多有意思的研究等着你去发现。&/p&&p&&b&Alpha探索是艺术和科学的交叉,是奇迹发生的地方。&/b&Alpha探索也包含一个产品迭代流程:猜想、测试、修正。 在Quantopian里,可以通过Pipeline API表达你的alphas,通过&a href=&///?target=https%3A///posts/alphalens-a-new-tool-for-analyzing-alpha-factors& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&alphalens&i class=&icon-external&&&/i&&/a&分析alphas的有效性。&/p&&br&&b&Alpha Combination(因子组合)&/b&&br&&br&&p&在当前的市场里,很少有单个因子足够有效,能够支撑起整个策略。一个成功的策略往往包含多个独立的因子,如果这些因子非常有效,那么只需要少数几个就够了。在这个阶段的目标是找到一种加权方案,使得多个标准化后的因子放到一起产生比任何一个单因子更好的预测效果。&/p&&p&加权方案可以非常简单:很多时候仅仅是对因子进行等级划分或者对多因子进行平均化处理就能产生显著效果。实际上,有一个非常流行的模型仅仅组合了两个因子,参见《 &a href=&///?target=https%3A///Little-Book-Still-Beats-Market/dp//ref%3Dsr_1_1%3Fie%3DUTF8%26qid%3D%26sr%3D8-1%26keywords%3Dthe%2Blittle%2Bbook%2Bthat%2Bbeats%2Bthe%2Bmarket& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Little Book That Still Beats the Market&i class=&icon-external&&&/i&&/a&》。 随着复杂度的不断增加,你可以通过学习经典投资组合理论取得帮助,比如这篇文章《&a href=&///?target=https%3A///posts/the-efficient-frontier-markowitz-portfolio-optimization-in-python-using-cvxopt& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Markowitz portfolio optimization in Python&i class=&icon-external&&&/i&&/a&》中,作者尝试找到最佳因子权重使得最终组合具有最低方差。&/p&&p&最后,我们还可以通过最新的机器学习技术去捕捉因子之间的复杂关系,比如,将你的因子转换为特征值并输入到机器学习分类器中,这也是一个非常热门的研究方向,如果感兴趣可以参考下面两片文章《&a href=&///?target=https%3A///abstract%3D937847& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Automated Trading with Boosting and Expert Weighting - Quantitative Finance&i class=&icon-external&&&/i&&/a&》《&a href=&///?target=https%3A///abstract%3D1930709& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Nonlinear Support Vector Machines Can Systematically Identify Stocks with High and Low Future Returns - Algorithmic Finance&i class=&icon-external&&&/i&&/a&》。&/p&&br&&b&Portfolio Construction(投资组合构建)&/b&&br&&br&&p&直到这个阶段,我们一直在进行纯粹的研究,不去考虑实际执行过程中的复杂因素,这样就可以在快速验证我们的想法。那么新的问题出现了,如何将研究成果落地?我们需要围绕最终的因子向量构建一个投资组合并进行交易,从而捕捉价值。在策略的每个循环流程期间(比如每天),我们计算多因子的最新值,组合成最终因子,计算出新的投资组合;然后,从上一个执行周期继承投资组合,进行对比后,生成一个交易列表从而实现投资组合的完美更新。&/p&&p&在创建理想中投资组合的过程中,有新的问题产生:投资组合会存在哪些风险?(即风险模型)投资组合构建步骤中的目标函数是什么? 怎样去约束投资组合?这三个问题必须明确的给出答案。而且,三个问题中的每一个的答案变得更加复杂时,投资组合结构中的复杂性就会增加。&/p&&p&接下来,我们使用最简单的技术:基于最终因子向量的分位数构造一个投资组合。举个例子,我们挑选股票池中前20%的股票以相等的权重做多,同时挑选后20%的股票以相等的权重做空,投资组合中包含了多空两种资产,并且多空仓位在绝对值上保持平衡。(在A股无法做空的情况下,可以做出适当调整,比如通过做空股指期货进行替代。)&/p&&br&&b&Trading(交易)&/b&&br&&br&&p&上一个阶段的产出是一个理想的投资组合和一个将目前投资组合过渡到理想投资组合的交易列表。而交易阶段,就是在市场中进行有效的交易。迄今为止我们所做的每一个选择,在这里都面临一些实现的问题:我需要的交易速度要多快?因子的预测能力衰减的有多快?在市场中被动的缓慢的执行更有效,还是积极的快速的执行更有效?总而言之,&b&我们需要做好平衡&/b&,如果说股票池的构建是在&b&价格分散&/b&和&b&自相似性&/b&之间做平衡,投资组合的构建是在&b&风险&/b&和&b&回报&/b&之间做平衡,那么交易则是在&b&因子衰变&/b&、&b&显性成本&/b&、&b&隐性成本&/b&以及&b&投资意图的暴露&/b&之间做平衡。&/p&&br&&b&总结&/b&&br&&br&&p&你可能想知道,是不是必须使用这个确切的流程才能取得成功?实际上,想要构建一个稳定的高夏普比率的策略,并没有一个完美的方法。留给投资者的研究空间非常大,而这个流程只是展示了大多数成功的投资者是如何解决这个问题的。你可以保持学习和实践,然后在这个流程上进行持续改进和创新。&/p&&br&&blockquote&&b&To follow the path,&/b&&br&若要求道,&br&&b&look to the master,&/b&&br&关注大师,&br&&b&follow the master,&/b&&br&跟随大师,&br&&b&walk with the master,&/b&&br&接近大师,&br&&b&see through the master,&/b&&br&洞察大师,&br&&b&become the master.&/b&&br&成为大师。&/blockquote&
作者:seaw 链接: 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Jonathan Larkin, Chief Investment Officer at Quantopian 构建一个高夏普比率的量化投资…
&p&可以学一下斯坦福新开的课程,cs20si,&a href=&///?target=http%3A//web.stanford.edu/class/cs20si/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&web.stanford.edu/class/&/span&&span class=&invisible&&cs20si/index.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&,国内可以看b站的视频,&a href=&///?target=https%3A///video/avFfrom%3Dsearch%26seid%3D4516403& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CS 20SI: Tensorflow for Deep Learning Research&i class=&icon-external&&&/i&&/a&,通过这个课程,能够对tensorflow有个全面的了解,从最基本的计算图开始,到如何结构化模型,了解最新的seq2seq,neural style等前沿算法的实现。&/p&&p&&br&&/p&&p&我准备写一个课程笔记,这是第一篇&a href=&/p/& class=&internal&&笔记&/a&&/p&&p&以上&/p&
可以学一下斯坦福新开的课程,cs20si,,国内可以看b站的视频,,通过这个课程,能够对tensorflow有个全面的了解,从最基本的计算图开始,到如何结构化模型,了解最新的seq2seq,neural…
&img src=&/v2-d84357e3d_b.jpg& data-rawwidth=&2000& data-rawheight=&1304& class=&origin_image zh-lightbox-thumb& width=&2000& data-original=&/v2-d84357e3d_r.jpg&&&h2&0. char-rnn&/h2&&p&关于RNN,LSTM,GRU的介绍已经有很多了,大家可以搜索相关的深度学习主题文章先去了解。&/p&&p&而char-rnn是一个多层的RNN网络,本次基于经过Tensorflow改写的&a href=&/?target=https%3A///sherjilozair/char-rnn-tensorflow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&sherjilozair/char-rnn-tensorflow&i class=&icon-external&&&/i&&/a&,输入大量的古诗,让机器学会自己创作。&/p&&h2&1. 使用&/h2&&p&代码于GitHub:&a href=&/?target=https%3A///wzyonggege/RNN_poetry_generator& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wzyonggege/RNN_poetry_generator&i class=&icon-external&&&/i&&/a& (欢迎Star)&/p&&p&&br&&/p&&p&&b&环境&/b&&/p&&ul&&li&Python 3.6&/li&&li&Tensorflow 1.2.0&/li&&/ul&&p&&b&使用&/b&&/p&&ul&&li&&b&帮助&/b&&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&python poetry_gen.py --help
&/code&&/pre&&/div&&p&命令行显示:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&usage: poetry_gen.py [-h] [--mode MODE] [--head HEAD]
optional arguments:
-h, --help
show this help message and exit
--mode MODE
usage: train or sample, sample is default
--head HEAD
生成藏头诗
&/code&&/pre&&/div&&ul&&li&训练样本数据&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&python poetry_gen.py --mode train
&/code&&/pre&&/div&&ul&&li&生成古诗&/li&&/ul&&p&上面的训练可能会花点时间,当然你也可以减少数据量去训练(GPU可以无视)。&/p&&p&训练完成之后:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&python poetry_gen.py --mode sample
&/code&&/pre&&/div&&p&即可生成古诗:&/p&&p&(可以选择选取多少个高频的汉字,若模型生成的不在选取的字典中,用‘*’代替)&/p&&blockquote&南晓弦门络丹墀

我要回帖

更多关于 python中的and 的文章

 

随机推荐