人脑认知科学对人工智能的启示
读《怪诞脑科学:战胜焦虑、混乱、拖延的自控术》有感
最近一段时间,一直在琢磨更好的AutoML,像我这样的懒人,当然希望能最大限度的发挥自动化的威力。
从决策树到随机森林,从支持向量机到神经网络,从遗传算法到强化学习,我发现他们都只是解决了数据转换和模式发现的问题,并未解决智能的问题。
如何让算法更智能?一有时间,我就会到互联网上去搜刮,可是截止到目前,并没有找到让我眼前一亮的新思路。
直到我读了一本书《怪诞脑科学:战胜焦虑、混乱、拖延的自控术》,颇有心得,遂记录下来,以便日后查阅
可能有人会觉得奇怪了,一本并非计算机科学领域的书,怎么能给人工智能的设计带来启示呢?我觉得好奇的朋友也可以看看,微信阅读上就能看到(涉嫌免费打广告了 ;-))
1."克鲁机"(kluge)
这是什么鬼?作者在文中大量使用了“克鲁机”这个词语,反复的强调了一个观点:不要把人脑看的过于神秘,人脑只不过是漫长进化的产物,而进化过程中难免会有失败的作品(比如盲肠等),所以人脑也是类似的(小脑和脑干也很原始),人的身体中充斥着各种“克鲁机”。
虽然没办法找到确凿的证据,但我总感觉“克鲁机”的观点似乎好有道理。所以,我觉得在机器学习模型设计上,不能仅仅只是一味的去探索和模仿人脑,而更应该用抽象思维去分析人脑处理信息的过程,所以更应该审慎的去看待目前火热的深度学习模型(深度学习方向真的正确吗?还是我们只是找到了一个筛子)
而目前的决策树和集成树模型,从原理的角度看,似乎更科学一些(只不过数据处理和加工需要投入更大的精力)
2.真正的智慧
这是作者给出的结论,我认为每条结论对个人的成长都有借鉴的价值,而更重要的是,能时刻正确分辨“智能”发展的方向:
2.1 尽可能考虑有无其他可行的选项
作者在这里列出了冷静思维、反向思维、虚拟思维的重要性,而这些是目前主流人工智能算法框架欠缺的,往往都是数据分析和建模人员的主观劳动。
举一个具体的例子,GAN生成对抗网络采用了“反向思维”的思想,结果大获成功,不得不说,这些思想就是人类智慧的宝藏,里面还有很多东西可挖
2.2 重新界定问题
这个思想不必过多介绍,在我们的软件开发、系统架构、数据分析、模型设计中其实都已经普遍采纳,尤其是在项目的需求分析阶段,重新界定问题关系到系统的成败。怀疑一切、再三思考、更换思路、逆向思维、更换问题,是这个环节的重要套路
2.3 相关不等于因果
这是数据分析和特征工程工程中最容易犯错的地方,即使是一个经验老道的数据分析师,也会在这个环节犯错,必须对这个推断陷阱始终保持警惕。而目前的神经网络模型在鉴伪方面,明显存在不足,例如DeepFake产生的伪造人脸视频,很多模型设计的细节就是错把相关关系变成了因果关系。所以我个人觉得这个方面还有很大的提升空间
2.4 控制样本大小
我们目前的机器学习模型,绝大部分都是建立在统计学基础上,样本越大,结论才会越准确。而我们在做数据分析和模型设计时,往往容易主观忽视这一点,尤其是目前的很多Meta learn和RL的最新研究成果,往往都只是在少量数据集上进行了实验,而实际使用时,就会发现完全经不起考验
2.5 预知冲动并事先约束
每个人本质上都是有偏见的,都受限于自身的认知和欲望。而数据分析的结论和机器学习模型也是有偏见的,取决于数据分析师和建模人员。所以我觉得,在人工智能模型设计环节,应该采取更开放和谨慎的态度去架构,对于没有开放源码、难以复现的研究成果,不要因为个人的欲望就去拼命专研,而应该谨慎的保持关注
2.6 始终要有备选方案
这也是人工智能中最让人头疼的地方,我们使用了决策树,我们研究了运筹学和博弈论,但我们设计的智能程序却总是“一根筋”,这是系统设计中最忌讳的,备选方案会提高系统的“智能”和“友好”水平。
以上6点都是对智能设计有借鉴的地方,当然作者还有很多其他建议:
- 不要在疲惫的时候做决定
- 始终不断权衡收益和代价
- 设想他人抽查你的决定
- 和自己保持距离
- 当心生动化的谣言
- 挑选重点
- 尽量理性
这些对个人发展都是很有益的,只是目前在“智能”的设计上可能不会太相关。
以上就是我个人理解的人工智能启示,也推荐大家看看这本书。
最后附上一张数据分析生命周期图,结合数据分析的流程加强消化理解,也时刻提醒自己
当然,我的认知肯定也是片面的,欢迎大佬们来怼!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
你会这道阿里多线程面试题吗?
背景 在前几天,群里有个群友问了我一道面试阿里的时候遇到的多线程题目,这个题目比较有意思,在这里和大家分享一下。 废话不多说,直接上题目: 通过N个线程顺序循环打印从0至100,如给定N=3则输出: thread0: 0 thread1: 1 thread2: 2 thread0: 3 thread1: 4 ..... 一些经常刷面试题的朋友,之前肯定遇到过下面这个题目: 两个线程交替打印0~100的奇偶数: 偶线程:0 奇线程:1 偶线程:2 奇线程:3 这两个题目看起来相似,第二个题目稍微来说比较简单一点,大家可以先思考一下两个线程奇偶数如何打印。 两线程奇偶数打印 有一些人这里可能会用讨巧的,用一个线程进行循环,在每次循环里面都会做是奇数还是偶数的判断,然后打印出这个我们想要的结果。在这里我们不过多讨论这种违背题目本意的做法。 其实要做这个题目我们就需要控制两个线程的执行顺序,偶线程执行完之后奇数线程执行,这个有点像通知机制,偶线程通知奇线程,奇线程再通知偶线程。而一看到通知/等待,立马就有朋友想到了Object中的wait和notify。没错,这里我们用wait和notify对...
- 下一篇
深入解析Node.js Stream ondata触发时机与顺序
今天小编就为大家分享一篇关于Node.js Stream ondata触发时机与顺序的探索,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 无用逻辑 当时研究pipe细节是基于Node.js v8.11.1的源码,其中针对上游的ondata事件处理有如下一段代码: // If the user pushes more data while we're writing to dest then we'll end up // in ondata again. However, we only want to increase awaitDrain once because // dest will only emit one 'drain' event for the multiple writes. // => Introduce a guard on increasing awaitDrain. var increasedAwaitDrain = false; src.on('data', ondata); function...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19