神经网络挺通用的,很多时候解决啥问题都简单粗暴训练个神经网络就是了,节省人的时间精力。但是:
1、神经网络大小固定
理想的机器学习结构:应根据任务的复杂程度在训练的过程中自动生长/剪枝成适合的大小。
至少应使用多级缓存系统:显存放置时刻用到的知识权值(如语言能力和当前任务上下文),内存放置一般常用的知识(如常识和几天前的记忆),硬盘放置不常用的记忆(如没那么重要的常识和很久的记忆)。
这样才能保证个人电脑只要有个算力足够的显卡即可运行上下文几乎无限的AI。当今很多个人电脑显卡算力虽足以用不慢的速度与一个人对话,但就是因为显存,AI总是无法装下足够的常识和上下文。
我希望,AI应像单机游戏那样,只要有电有电脑就能用了,而不是只能共享云服务器模型,受制于人。这样每个人才能按喜好自由定制自己的AI。
2、神经网络输入输出固定
人遇到什么问题都必须把问题转成m个浮点数输入到n个浮点数输出的格式,不同数据结构就得研发不同的向量的转换方式,规律的数据才能让固定的神经网络更容易拟合。
理想的机器学习结构:无需预处理输入输出,人机交互直接采用原始形式(如直接输入输出字符串/字节流/压缩包文件)。
也就是完全在模型内部完成预处理、逐步分析推理计算、返回结果的整个流程。
3、不应让神经网络计算所有东西
人脑的神经网络,存有数学知识,知道列式计算。但比起用计算器效率还是差太多了。
所以,应给AI提供一个编程API,让AI像人一样,遇到繁琐的计算任务只需要动用语言能力写个程序,交给计算机处理再观察结果即可。
4、不应让神经网络存储所有东西
神经网络处理的浮点数权值本质是“模糊感性的分析”(经验性的),所以只应将时刻用到的基本语言能力、基本数理逻辑能力存放于神经网络,用于主导思维。
知识是学不完的,所以只应学习世间万物的大概核心内容。详细内容应存放于硬盘,用到的时候读取相关字节即可。
至于世间万物的细枝末节,如非当前任务用到,否则不应全部学习占用硬盘空间,而是只需掌握关键词,知道以后任务遇到时,如何当场调用互联网搜索即可。
5、神经网络并不会自己分析数据(消化知识)
人丢给神经网络一个输入和输出数据它便反向传播修改一次权值,重要的数据和不重要的数据都会造成等同的影响。因此人要花精力去控制数据集的分布。
当出现新事物时,仅加入几个新数据反向传播几次是不行的。例如学到新的数学公式,至少要让AI运行几千刻让它分析公式与已知知识的联系。
而且神经网络必须避免训练集出现垃圾信息,因为它也会被用于反向传播权值。
理想的AI模型算法是未知的,只有个大概的想法:
赋予AI一台隔离的虚拟机,让虚拟机操作系统对接AI
赋予AI一台计算机,就已经赋予了存储API和编程API。就像人类使用计算机那样。
赋予AI一定的网络访问权限:允许访问白名单的网站并下载内容到虚拟机中,允许上传白名单内容到白名单网站。
此时它在生产力上已经差不多达到个人能力了。
用虚拟机,虽会导致性能不能完全发挥,但能避免AI不小心运行错误的程序(如rm -rf /)篡改个人计算机中的文件。
理想的AI输入数据:
输入和对应的输出本应是一体的,加起来相当于一条“信息”。应将输入的内容整合成一条条“信息”,输入AI。由于信息+信息也是信息,理想的AI应支持整本书直接一次输入。
AI会将出现的新信息与现有的知识网络尝试建立联系,如果一直建立不了联系(置信度过低)就会搁置,等待新的输入解释未知信息。如果搁置久了仍未解释就会当成无效信息遗忘。
除了外部输入的信息,内部也会对置信度充足的信息进行“思维碰撞”,产生的新信息。所以当一段信息足够造成启发(如数学公式),就会产生很多层的信息,分析很长时间,直到不再产生新信息。
理想的AI输出结果:
为了让一个知识网络输出内容,可以直接把问题丢进去。AI内部主动将问题信息与网络建立联系的过程中产生答案。
任重道远。