自从MMC Ventures发布意外发现以来已经一年了,有40%的AI初创公司在其技术堆栈中没有实质性使用AI。
Author Archive
陆奇:传统企业数字化转型的七个关键问题
企业要弄明白的是自己为什么要做、选择怎样的时机、采取的方式以及可能遇到的挑战。今天分享的这篇文章里,陆奇系统地分析和解答了这些问题。
如何建立一个可信的AI系统 (Trustworthy AI)
AI伦理科学家,这是个什么角色,作用是什么?AI又与“伦理”有何联系……而有“伦理”的AI又需要是什么样子?
如何构建用户可以信赖的AI应用
本质上,要获得用户认可,您需要采取两步走的方法:让用户知道您要收集哪些数据以及为什么要收集数据,并让他们控制收集。
胶囊神经网络
背景
研究问题
研究动机
CNN的缺陷
逆图形法
胶囊网络优点
由于胶囊网络集合了位姿信息,因此其可以通过一小部分数据即学习出很好的表示效果,所以这一点也是相对于CNN的一大提升。举个例子,为了识别手写体数字,人脑需要几十个最多几百个例子,但是CNN却需要几万规模的数据集才能训练出好结果,这显然还是太暴力了! 更加贴近人脑的思维方式,更好地建模神经网络中内部知识表示的分层关系,胶囊背后的直觉非常简单优雅。
胶囊网络缺点
胶囊网络的当前实现比其他现代深度学习模型慢很多(我觉得是更新耦合系数以及卷积层叠加影响的),提高训练效率是一大挑战。
研究内容
胶囊是什么
人工神经网络不应当追求“神经元”活动中的视角不变性(使用单一的标量输出来总结一个局部池中的重复特征检测器的活动),而应当使用局部的“胶囊”,这些胶囊对其输入执行一些相当复杂的内部计算,然后将这些计算的结果封装成一个包含信息丰富的输出的小向量。每个胶囊学习辨识一个有限的观察条件和变形范围内隐式定义的视觉实体,并输出实体在有限范围内存在的概率及一组“实例参数”,实例参数可能包括相对这个视觉实体的隐式定义的典型版本的精确的位姿、照明条件和变形信息。当胶囊工作正常时,视觉实体存在的概率具有局部不变性——当实体在胶囊覆盖的有限范围内的外观流形上移动时,概率不会改变。实例参数却是“等变的”——随着观察条件的变化,实体在外观流形上移动时,实例参数也会相应地变化,因为实例参数表示实体在外观流形上的内在坐标。
人造神经元输出单个标量。卷积网络运用了卷积核从而使得将同个卷积核对于二维矩阵的各个区域计算出来的结果堆叠在一起形成了卷积层的输出。 通过最大池化方法来实现视角不变性,因为最大池持续搜寻二维矩阵的区域,选取区域中最大的数字,所以满足了我们想要的活动不变性(即我们略微调整输入,输出仍然一样),换句话说,在输入图像上我们稍微变换一下我们想要检测的对象,模型仍然能够检测到对象 池化层损失了有价值的信息,同时也没有考虑到编码特征间的相对空间关系,因此我们应该使用胶囊,所有胶囊检测中的特征的状态的重要信息,都将以向量形式被胶囊封装(神经元是标量)
囊间动态路由算法
权重均为非负标量 对每个低层胶囊i 而言,所有权重cij 的总和等于1 对每个低层胶囊i 而言,权重的数量等于高层胶囊的数量 这些权重由迭代动态路由算法确定
更多的迭代往往会导致过拟合 实践中建议使用3次迭代
整体框架
第一层:卷积层 第二层:PrimaryCaps(主胶囊)层 第三层:DigitCaps(数字胶囊)层 第四层:第一个全连接层 第五层:第二个全连接层 第六层:第三个全连接层
编码器
卷积层
输入:28×28图像(单色) 输出:20×20×256张量 卷积核:256个步长为1的9×9×1的核 激活函数:ReLU
输入:20×20×256张量 输出:6×6×8×32张量(共有32个胶囊) 卷积核:8个步长为1的9×9×256的核/胶囊
输入: 6×6×8×32张量 输出: 16×10矩阵
损失函数
解码器
输入:16×10矩阵 输出:512向量
输入:512向量 输出:1024向量
输入:1024向量 输出:784向量
参考资料
人工智能技术在防疫抗疫工作中大有用武之地
近期,新型冠状病毒肺炎(NCP)的疫情突如其来,让人们有些措手不及。但是为了实现更好的防疫抗疫效果,不少科研人员纷纷应用诸多技术手段来抗击疫情。其中人工智能技术已成为这场防疫抗疫攻坚战的有力武器之一;它在疫情防控、图像分析、辅助诊断、疫苗研发等方面助力防疫抗疫工作。
判断AI在春天还是冬天,只需要看这一个指标
有人认为AI距离我们太过遥远,现在谈论为时尚早;有人认为AI时代已经到来,我们应该抓住时代的红利。那么,AI到底在春天还是寒冬?
训练集、验证集、测试集(附:分割方法+交叉验证)
数据在人工智能技术里是非常重要的!本篇文章将详细给大家介绍3种数据集:训练集、验证集、测试集。
同时还会介绍如何更合理的讲数据划分为3种数据集。最后给大家介绍一种充分利用有限数据的方式:交叉验证法。
先用一个不恰当的比喻来说明3种数据集之间的关系:
- 训练集相当于上课学知识
- 验证集相当于课后的的练习题,用来纠正和强化学到的知识
- 测试集相当于期末考试,用来最终评估学习效果
什么是训练集?
训练集(Training Dataset)是用来训练模型使用的。
在《一文看懂机器学习》里我们介绍了机器学习的7个步骤,训练集(Training Dataset)主要在训练阶段使用。
什么是验证集?
当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。
验证集有2个主要的作用:
- 评估模型效果,为了调整超参数而服务
- 调整超参数,使得模型在验证集上的效果最好
说明:
- 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
- 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。
什么是测试集?
当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。
通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。
扩展阅读:《分类模型评估指标——准确率、精准率、召回率、F1、ROC曲线、AUC曲线》
如何合理的划分数据集?
下面的数据集划分方式主要针对「留出法」的验证方式,除此之外还有其他的交叉验证法,详情见下文——交叉验证法。
数据划分的方法并没有明确的规定,不过可以参考3个原则:
- 对于小规模样本集(几万量级),常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。
- 对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可,例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。1000w 的数据,同样留 1w 验证集和 1w 测试集。
- 超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。
交叉验证法
为什么要用交叉验证法?
假如我们教小朋友学加法:1个苹果+1个苹果=2个苹果
当我们再测试的时候,会问:1个香蕉+1个香蕉=几个香蕉?
如果小朋友知道「2个香蕉」,并且换成其他东西也没有问题,那么我们认为小朋友学习会了「1+1=2」这个知识点。
如果小朋友只知道「1个苹果+1个苹果=2个苹果」,但是换成其他东西就不会了,那么我们就不能说小朋友学会了「1+1=2」这个知识点。
评估模型是否学会了「某项技能」时,也需要用新的数据来评估,而不是用训练集里的数据来评估。这种「训练集」和「测试集」完全不同的验证方法就是交叉验证法。
3 种主流的交叉验证法
留出法(Holdout cross validation)
上文提到的,按照固定比例将数据集静态的划分为训练集、验证集、测试集。的方式就是留出法。
留一法(Leave one out cross validation)
每次的测试集都只有一个样本,要进行 m 次训练和预测。 这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。 一般在数据缺乏时使用。
k 折交叉验证(k-fold cross validation)
静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:
- 将数据集分为训练集和测试集,将测试集放在一边
- 将训练集分为 k 份
- 每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。
- 通过 k 次训练后,我们得到了 k 个不同的模型。
- 评估 k 个模型的效果,从中挑选效果最好的超参数
- 使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型。
k 一般取 10 数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。 数据量大的时候,k 可以设小一点。
人工智能、机器学习、深度学习在2019年的重要发展和2020的趋势(研究篇)
2019年AI,数据科学,深度学习和机器学习的主要发展是什么?您预计2020年会有哪些主要趋势?
人工智能、机器学习、深度学习在2019年的重要发展和2020的趋势(技术篇)
2019年AI,数据科学,深度学习和机器学习的主要发展是什么?您预计2020年会有哪些主要趋势?