Re: [好文推荐] 这两盘棋 没人会比李世石做得好

楼主: fallcolor (秋天走了)   2016-03-12 00:39:12
※ 引述《reinhert (史丹佛的银色子弹)》之铭言:
: 所以常常看到有人说找Bug和对原始码下手,但其实这是不对的
: 这个计算系统是随时随地在变动的
: 如果有一般人所谓的Bug(系统实作上的问题)也早就找出来了
: 要也是要对Model和系统本身的弱点来下手,但NN会在不断的训练逐渐趋近最佳解
: 所以要"骗"或找Bug是非常困难的甚至没意义的
其实找bug这件事也不是这么绝望
NN的稳定性目前在ML领域还是一直受到挑战
例如:
http://www.zdnet.com/article/hacking-neural-networks/
作者就是在研究针对一个NN训练出来的分类器
如何加入一点点噪声就可以造成预测结果改变
不过这种作法相当于用算法破解算法
要靠人的智识透过观察与归纳找出ML技术训练出来的模型的的漏洞
可行性几乎是零
作者: aaaba (小强)   2016-03-12 00:42:00
姑且不论狗不是纯nn的机制,你要怎么注入噪声分类问题分错就错掉了,回归问题错得不离谱的情况,mcts 会顺利运作
楼主: fallcolor (秋天走了)   2016-03-12 00:45:00
加入什么样的噪声能让模型预测失效也是靠算法算出来人类能做的事是从这些噪声反推此模型对什么样的输入比较敏感 容易预测错误
作者: bxxl (bool)   2016-03-12 00:46:00
ML系统不是本来就该能容忍输入资料的一些噪声才算实用吗?
楼主: fallcolor (秋天走了)   2016-03-12 00:48:00
对 但这个研究的方向就是要证明ML还有改善空间
作者: aaaba (小强)   2016-03-12 00:48:00
图片的像素可以任意微调,盘面是要怎么动手脚?
楼主: fallcolor (秋天走了)   2016-03-12 00:50:00
在某棋面下出某一步造成系统预测失准 把这种方式当作加噪声
作者: ddavid (谎言接线生)   2016-03-12 00:51:00
你丢入低棋的棋谱、虽然是高棋但下烂的棋谱,这就是一种噪声如果能证实,放1000好的高棋谱跟1000高棋+500烂谱都能学成相差不大的实力,则我们就可以说这个架构有一定抗噪声的能力了,反之要是加入烂谱会让实力骤降,那就是非常不抗噪声
作者: aaaba (小强)   2016-03-12 00:54:00
楼上先弄清这里在讲testing phase
作者: ddavid (谎言接线生)   2016-03-12 00:55:00
喔,我没针对那篇的内容在讲啊你如果一定要限定在Testing的话,以围棋这个例子我还真没法立刻想到特别好的方法,因为盘面动一子已经视同完全不同的盘面了,跟一般常见以特征条列的Input特性不太一样不过其实我觉得谈到噪声的时候training处理比较重要因为只要training没因为噪声造成overfitting,就相对不怕testing用的资料也有噪声
作者: blackwindy (黑色的风)   2016-03-12 01:03:00
丢棋谱其实没什么用 因为它主要是靠自我学习成长棋谱比较像是initialization 乱数起始比较没效率
作者: ddavid (谎言接线生)   2016-03-12 01:04:00
不,棋谱是学习开始使用的seed,绝不是不重要的东西
作者: blackwindy (黑色的风)   2016-03-12 01:05:00
他会自我校正阿 除非初始化真的太差 不然不会差太多
作者: aaaba (小强)   2016-03-12 01:06:00
可是图片分类器在training时噪声加得可多了,还是有盲点。
作者: blackwindy (黑色的风)   2016-03-12 01:06:00
有随机的成分在 时间拉长还是会往好的方向去收敛
作者: ddavid (谎言接线生)   2016-03-12 01:07:00
还是不完全正确,不佳的initialization除了效率可能不佳外,有可能更容易导向较差的local maximum
作者: blackwindy (黑色的风)   2016-03-12 01:08:00
所以没事就找些真人来打打 让他不要过早收敛自我对战可能比较容易陷入local optimum
作者: ddavid (谎言接线生)   2016-03-12 01:09:00
这跟喂新的好谱是同样的概念呀
作者: blackwindy (黑色的风)   2016-03-12 01:09:00
但这边有个问题就是 如果他的local opt已经比人强了那好像就没差了
作者: ddavid (谎言接线生)   2016-03-12 01:10:00
对于追求更好来说还是有差的啦,应用层面当然就会够用即好
作者: aaaba (小强)   2016-03-12 01:18:00
反正就是围棋的输入很干净,没也所谓噪声干扰的问题。training的时候根本就没有加烂谱砸自己脚的道理。测试阶段也无法让电脑接收到噪声,落子偏一路之类的,对电脑可不是什么噪声,而是你下坏了。
作者: ddavid (谎言接线生)   2016-03-12 01:22:00
training加烂谱有意义啊,第一是测试model的稳定性不会因为你不小心加了如有些高手下出来可是有恶手的谱就学到烂招,第二是这些恶手是人类判读的,但电脑未必如此解读而能重组成为新的好手喂不同的资讯training出多个不同版本来观察之间的差异,可以进一步确认喂谱时的选取标准也是一点
作者: aaaba (小强)   2016-03-12 01:30:00
先问一下,烂谱是?
作者: ddavid (谎言接线生)   2016-03-12 01:31:00
比如两个级位的棋谱。不过,这边我不特别定义什么是烂谱,我的看法是在training喂各种不同的谱然后看分别出来model的表现,才去反推哪些谱应该要被归类于尽量不要喂进去的“烂谱”,最后才以留下被认为效果较佳且合理的谱去train一个最终的版本另外就是,如果多个版本其实表现差不多,那就会表示这个model其实抗噪声能力很强,甚至反过来能从一些连人为判读都觉得明显糟糕的谱筛选出有效资讯,则在这种情况下就变成
作者: aaaba (小强)   2016-03-12 01:36:00
在图片分类问题时,猫的图片加噪声后,人也是可以认出是一只猫,所以training时可以借此做data augment,你的烂谱似乎没这个效果。
作者: ddavid (谎言接线生)   2016-03-12 01:36:00
不需担忧及定义区分喂进去谱的品质了,有谱就喂即可烂谱的每一手或特定一段着手是可以拆开看的,烂谱仍然有可能有助于统计什么下法会是该被惩罚的恶手,利用正确并非完全无用但我前提讲得很清楚,什么谱是有用的要分别用不同集合的
作者: aaaba (小强)   2016-03-12 01:40:00
你这样好像把猫的图片标示为狗,能帮助学习吗?
作者: ddavid (谎言接线生)   2016-03-12 01:40:00
training来做测试,结论当然有可能就是某些定义的烂谱不该喂就说了这个测试就是为了知道这能不能帮助学习,有没有恶影响呀XD举例来说图片网站上面人为标的Label并不一定都是对的,人力根本没办法全部一一验证,所以我们会期待我们的model有抗噪声能力,喂了少数猫标成狗、狗标成猫的图还是最后能够train出来相差不大的model。所以才需要先做这个刻意控制的测试来检验model的抗噪声能力或者对training data的偏好,这是为了下一步挑选出最佳的training set来train出最终版本的model另外就像我现在在做的问题是incomplete label,一张照片可能有很多元素,但人可能只标出最重要的一些,其他的一些没被标到不代表它不存在,但是你喂进去model就会真的当那些元素不存在了,那你怎么样在label没给完整的情况下尽可能还是train出一个可以解答更完整label的model?很明显incomplete label是学习的负面因子,事实上也是广义的一种噪声,但就是要观察什么model能够在这种情况下仍旧train出可用可被接受的model,如此我们就能在挑选图片/棋谱这个耗人力的阶段省下更多cost,甚至反过来还能让model帮我们筛选出什么是标完整的照片/好谱,什么是乱标的照片/乱下的棋谱另外像semi-supervised learning也是相关的层面,有些照片
作者: blackwindy (黑色的风)   2016-03-12 01:53:00
现在的问题是你没办法验证有没有恶影响
作者: ddavid (谎言接线生)   2016-03-12 01:53:00
根本就什么都没标,但是就是有研究让你塞少量有标大量没标
作者: blackwindy (黑色的风)   2016-03-12 01:54:00
我相信这世界上滥谱的数量远大于好谱 全部乱喂那蛮贵的 而且这应该不是GOOGLE要的东西
作者: ddavid (谎言接线生)   2016-03-12 01:55:00
以对局输赢的机率来反推哪种趋向的training set能让它更好我说的只是一种研究方向,并不是说Google必须如此做XD
作者: blackwindy (黑色的风)   2016-03-12 01:56:00
是阿 研究题目到是不错 只是google要的是可以动的产品
作者: ddavid (谎言接线生)   2016-03-12 01:56:00
这是因为这篇推文最前面谈到噪声问题才一路谈下来的XD事实上如果做出抗噪声的model,它的好处就是可以帮我们反筛选哪些是烂谱哪些是好谱(虽然是以它的角度)
作者: blackwindy (黑色的风)   2016-03-12 01:57:00
还有个问题 都丢人类棋谱只是让弄出个像人的阿法狗我想这也不是GOOGLE要的 他要的是超越人的阿法狗
作者: ddavid (谎言接线生)   2016-03-12 01:58:00
但如果目标不在此,就是要做到跟人下棋,当然不见得需要理这个研究方向,就乖乖选择一般人认同为好谱的集合丢进去做为seed就好了这没有啥问题,因为丢谱只是做为seed,他后续的成长是靠之后自我对局做最佳化,很明显现在的AlphaGo就是喂人类对局却也能自我学出不完全人类的思维
作者: blackwindy (黑色的风)   2016-03-12 02:00:00
是阿 我前面就说了init没什么差 训练后比人强就好
作者: aaaba (小强)   2016-03-12 02:01:00
应该要对噪声敏感的model才能拿来筛选dataset吧?
作者: ddavid (谎言接线生)   2016-03-12 02:01:00
不,自我对局那边是一个最佳化过程,它虽然可以学到一开始谱没有的东西但不代表它不会受到seed的影响呀自我学习并不是万灵丹可以绝对最佳化,你给它烂seed还是有
作者: blackwindy (黑色的风)   2016-03-12 02:02:00
问题是这space太大了 这么大你从哪边起始差异不大吧
作者: ddavid (谎言接线生)   2016-03-12 02:02:00
可能使它成长的天花板变低的就是太大了,你选了烂起点会有可能造成他永远逛不到好的那
作者: blackwindy (黑色的风)   2016-03-12 02:03:00
而且你不能排除人类那些东西是一个local opt的可能
作者: ddavid (谎言接线生)   2016-03-12 02:04:00
一边去,一直在烂的这边走来走去
作者: blackwindy (黑色的风)   2016-03-12 02:04:00
根本没有一个有效的评估方式去知道那堆棋谱的好坏
作者: blackwindy (黑色的风)   2016-03-12 02:05:00
你看现在结果证明那堆棋理搞不好根本都错了 不靠谱阿
作者: ddavid (谎言接线生)   2016-03-12 02:05:00
用自我学习去尽可能跳脱原本的local maximum往更好的部分爬
作者: blackwindy (黑色的风)   2016-03-12 02:07:00
我个人是比较赞成乱数起始就是 比较没bias
作者: ddavid (谎言接线生)   2016-03-12 02:07:00
并没有证明“都错”啊,事实上真正超脱的着手并不多啊,整体来讲仍然大多数着手都在棋理之中,只是少部分新观念太抢
作者: blackwindy (黑色的风)   2016-03-12 02:08:00
应该说 人类下的那堆棋到底AI适不适用就是个问题
作者: jimmy20642 (金殷2014拿冠军!)   2016-03-12 02:08:00
对岸看到的一篇文章:https://goo.gl/JX1YHd
作者: blackwindy (黑色的风)   2016-03-12 02:09:00
说不定反而害他绑手绑脚
作者: jimmy20642 (金殷2014拿冠军!)   2016-03-12 02:09:00
不明觉厉 请高手解释orz
作者: ddavid (谎言接线生)   2016-03-12 02:09:00
眼会让人误以为过去棋理崩溃,但其实并不到过去全错的地步
作者: blackwindy (黑色的风)   2016-03-12 02:10:00
这样说吧 如果乱数起始然后还是跑出类人的棋理那就验中那些棋理是对的 没跑出来搞不好就是错的懂吗? 你要研究价值这就一点
作者: ddavid (谎言接线生)   2016-03-12 02:10:00
乱数起始就回到我前面讲的东西啦,如果你喂一堆高手谱跟喂乱下谱最后能train出一样好的model,就证明了此model不依赖seed,因此当然就不用担心这回事啦这就是我前面说,改变training set可以进行的其中一种研究@jimmy20642 本版应该已经有好几篇文在解释,恕我没法在这边再一次重复了XD 一个不注意都过半夜两点了啦!XDDD我要先撤退了,感谢几位的讨论XD
作者: aaaba (小强)   2016-03-12 02:15:00
乱数seed能成立的机率请参考地球生命的起源
作者: ddavid (谎言接线生)   2016-03-12 02:16:00
不一定啦,要看问题特性跟model,特别是类神经网络这一种model在真的让它试看看之前我实在无法说seed的好坏到底差多少XD
作者: birdy590 (Birdy)   2016-03-12 02:19:00
它的几个网络并不是用来下棋啊 而是辅助mcts
作者: aaaba (小强)   2016-03-12 02:20:00
他讲的乱数那种方法只有过时的ga才有,类神经的label用乱数是怎么学?
作者: blackwindy (黑色的风)   2016-03-12 02:25:00
http://goo.gl/qnoGZI 这边有人问上面基本上观点跟我理解的一样
作者: fermib (ohyah)   2016-03-12 07:03:00
这东西简直就是变魔术 原理说破不难理解 但实现的过程极其困难有很多问题也一堆人不相信 结果真的跟魔术一样 让人张大嘴巴...
楼主: fallcolor (秋天走了)   2016-03-12 08:04:00
人这么武断很难做研究
作者: aaaba (小强)   2016-03-12 10:44:00
@blackwindy:你说的是weight在还没training前如何init?那目前惯例是用乱数没错,只是这样一来,你前面的论述我就不懂了,ddaivid在讨论要用什么样的dataset来研究其他议题时,你在讲初始化,根本是不同的事情,我就误会了,现在我的理解是不管ddavid要用好谱还坏谱,他都能用乱数weight开始训练网络,你们所谓init可能存在歧义。你在25楼说“丢棋谱没用,现在是靠乱数起始”,这句话意味不明,你的label不是用棋谱产生吗?棋谱怎么会没有用呢?不用棋谱你来做出一个1d的AI? 愿闻其详。
作者: birdy590 (Birdy)   2016-03-12 12:30:00
学理是输入棋谱大量训练后会趋于稳定, 初值乱数会比较快
作者: aaaba (小强)   2016-03-12 12:55:00
初值乱数没问题,我质疑的初值乱数根本无法取代谱的好坏扯在一起讨论难免产生误会

Links booklink

Contact Us: admin [ a t ] ucptt.com