用户:清华大学 Dr.潘查看:0 回复:25 评论:0 创建时间:2018-01-30T14:38:22
最近我们猫厂上线了酷炫的积木实验室啦!(手动撒花~)其中包括两个AI的模块:分类AI和GameAI。估计不少大佬们已经在背后默默加班要做出来社区里第一个AI的作品,另外也还有一些小伙伴对AI模块的用法有不了解的地方。因为我刚好是学人工智能这块的,这几天也玩了好久积木实验室,接下来我会在本帖下面通过来和大家分享一下分类AI的一些使用经验,也欢迎大家有什么不明白或者自己的经验的话在本帖下面积极分享。期待和大家的交流哟~
首先,关于AI里面分类AI的基本使用,技术喵已经有非常详细的介绍了。对于相应模块的功能和简单的实现,大家先看一下相关的介绍:
https://www.codemao.cn/wiki/forum/8912
点赞0
评论
【关于学习的思路】
让AI进行学习,其中最核心的原理就是利用数据之间的相关性。关于相关性,其中的例子就是一个人的性别和购物的偏好是有相关性的,女生会更喜欢衣服、鞋子这些,男生会更喜欢机器人这些。要注意的一点是相关性不是绝对成立的规律,而是基于对大量的数据进行统计的结果,例如的确存在不少的程序媛或者女极客更喜欢极客一点的东西,但社会上大部分的小姐姐应该还是更粉衣服和鞋子吧。(欢迎大家提供一些举例的素材,90后的老腊肉表示和大家有代沟真的很难举例子啊)
点赞0
评论
接着上面的讨论,数据之间相关性的产生,通常背后都会有着相应的机理(当然也存在着在数据不多的情况下,纯粹因为偶然而产生的相关性)。有的时候,去探究背后的机理对我们来说有很重要的意义,因为这会告诉我们这个世界究竟是怎么运行的;有的时候,仅仅是相关性本身就已经可以为我们所用了。
有一个特别经典的例子(为了说明这一点,故事略有改动):
1)有一段时间,喵沃尔玛超市发现啤酒和尿片这两样商品具有很强的相关性:它们经常会出现在同一个购物篮子里面。这时候为了利用这个相关性,超市设计了一系列的措施:把这两样商品放在比较靠近的位置,推出同时包括这两样商品的优惠套餐。结果果然销售额得到了大幅提升;
2)超市的相关人员还希望之后啤酒和尿布经常会出现在同一个购物篮子里面的原因,经过对顾客的调查之后他们发现,原来是因为当时在婴儿的家庭里面,都是妈妈在家照看孩子,爸爸下班后来买尿片这些相关用品,爸爸在买尿片的同时想着自己实在是太辛苦了就顺便买啤酒来犒劳自己(真是天下直男一个样)。
像通过我们的分类AI能做到的就是上面1)这一步:让计算机发现数据中的相关性的规律并利用相关性完成相应的预测任务。至于对相关性背后的原理的分析,则是由我们各位训练师根据实际情况决定是否需要进一步分析,如果要分析,那相关性背后的机理到底是什么。
点赞0
评论
【关于分类喵的训练技巧】
好,在大家已经基本熟悉了分类喵的各个模块,也能根据教程搭出来一个最简单的分类喵之后。接下来我要介绍的是关于分类喵的几项训练的技巧。在介绍之前先讲一下故事:
在2017年底人工智能最顶级会议之一的NIPS上,一位获奖者直接向目前在学界和业界都非常火的深度学习开炮,怒斥其为现代的炼金术,有兴趣的可以阅读下面的介绍:
NIPS风波|获奖者登台开炮:ML是炼金术,大神LeCun强硬回怼(https://zhuanlan.zhihu.com/p/31785823)
事实上根据喵常的学习和经验,对于深度学习的问题我们要一分为二地看待,深度网络的原理和设计应该是具有科学性的,其科学性在结构比较简单的网络上已经得到了严谨的验证,而且在一些实际任务,深度网络的确能取得非常优越的性能效果;但因为在目前我们使用的复杂网络上还缺乏理论的推导和科学的分析方法,所以对于复杂网络的设计和训练还是非常依赖一些经验性的技巧。正是由于技术上的两面性,所以如果你和一位相关的从业人员交流,他的态度其实是由你的提问方式决定的:
场景一
A:你用的深度学习,就是炼金,就是玄学,too young!too trivial!sometimes naive!!!
B:哼!深度学习也是有科学性的好嘛。最重要的是,你用的方法是有理论保证,你在实际任务上能比得过我的深度学习方法吗,等什么时候你的方法能超过深度学习的方法了,再来和我说这些。
场景二
A:哇。你这个深度学习的方法好强呀,一下子就把这个任务解决得很好呢。
B:哪有哪有,都是运气好。(心里暗想:太险了,昨天晚上熬了一个通宵,总算调了一组能用的参数。)
(以上故事纯属虚构,如有雷同,纯属事实。)
所以说,对于目前人工智能和深度学习相关内容的学习,我们一定要兼有科学和实践的态度和思维。下面我会一一具体介绍一些实用的技巧。
点赞0
评论
【分类喵的训练技巧一——网络结构的基础设计思路】
好了前面碎碎念把故事讲完了之后现在开始讲干货了,在我们设计具体的分类喵的时候,首先应该考虑的是我们具体的任务,这个版本的分类喵用的是最基本的神经网络的架构,特点就是泛用性强:各种数据类型都能处理,但不是基于某种特定任务设计的,所以在某些特定任务上性能会不如经过特别设计的网络。像对于图片分类的任务,分类喵肯定也是可以做的(只要你愿意在设置训练数据特征的时候手动添加几百几千维的特征
),不过一般来说效果会比上不专门为处理图像设计的卷积神经网络(https://en.wikipedia.org/wiki/Convolutional_neural_network)。下面我的介绍主要会集中于特征数不会太高的数据。
如果不考虑图像、声音或者文本处理这些格式比较特殊的任务的话,我们对分类喵的结构能够调整的部分就是神经网络的层数和各层单元的个数了。一般来说,神经网络的层数越深,每层的单元数越多,神经网络就能学习越复杂的数据分布。下面是一个例子:
对于只有一层三个单元的神经网络(大家留意下面图示里面神经网络隐含层的参数设置),不管学习多久都是没办法学习到圆形的数据分布的
这时候如果把单层的单元数增多,神经网络就能学习到圆形的数据分布了:
或者增加额外的层数也能达到相应的效果:
实际设计的过程中通常是两种方法并用,不过有研究成果表明:在每层单元数较多的情况下,增加层数比增加每层的单元数能取得更大的表达能力的提升。关于这一点大家先有个直观的认识,毕竟分类喵目前最多也只有两层。
(分类喵内心OS:你是在针对我大分类喵!!!)
另外在实际设计的时候也不是说层数越多越好,每层单元个数越多越好。因为层数和每层单元数的增加会使得模型更为复杂,需要更大的存储和计算资源。
(当然貌似现在对层数和每层单元数都有限制,所以现在的分类喵都很弱的,也就不用担心一发模型就开爆猫厂服务器内存的情况出现了)
(分类喵内心OS2:好了,你够了,不要再说了。)
除了计算资源方面的考虑,还有一个原因是神经网络是通过后向传播算法来训练的,(盗一下技术喵的图),顾名思义训练的信号就是从输出层往前传播,如果神经网络太深的化,训练的信号传到一半就传不下去了,整个网络的训练就会不充分。
当然啦,两层的分类喵,就不用担心……
(分类喵内心OS3:……!!!)
点赞0
评论
这有个网站也是这个
http://playground.tensorflow.org/#activation=tanh&batchSize=10&dataset=xor®Dataset=reg-plane&learningRate=0.03®ularizationRate=0&noise=0&networkShape=3,3&seed=0.52907&showTestData=false&discretize=false&percTrainData=90&x=true&y=true&xTimesY=true&xSquared=true&ySquared=true&cosX=false&sinX=true&cosY=false&sinY=true&collectStats=false&problem=regression&initZero=false&hideText=false
点赞0
评论
嗯嗯,tensorflow是现在最火的深度学习开发平台,有python基础的训练师可以接触。另外猫厂这边的GameAI是结合游戏的场景设计的,而且分类AI和GameAI整体上都可以和编程猫其他的模块结合开发各种有趣的东西,各位训练师可以都关注学习讨论哈。
点赞0
评论