您的位置:首页 > 大数据

对机器学习名词的一些个人理解

2018-02-08 10:39 267 查看
接触Python和机器学习也有一段时间了,也看了不少人的心得体会,综合自己的实际经历,想谈谈个人的看法。
首先,我一直认为,机器学习,算法、语言通通不重要,哪怕你的代码是完全拷贝别人的,也不代表你的能力就是很低。当初学习机器学习的时候,我看过吴恩达的教程,也看过李飞飞的博士生的公开课,得到的领悟是,决定是否成为大师的,不是你对算法、工具包用得多熟练,而是你对整个过程的整体把控,包括每一种工具的意义、对数据的理解,这些才是机器学习的核心价值。
一、大数据
什么是大数据,通用的定义“4V”我也就不重复了,但我觉得,并没有很多人真正理解透彻。大数据的核心价值到底是什么?两个字就可以概括:“分布”。大数据,就是分布足够全、足够贴合现实的情况、足够覆盖所有的可能性。只有这样,做机器训练的时候,才可以采集足够通用的特征。至于数据量的多寡,我认为属于多样性的附属品,我的理解是,只要你覆盖够全部的可能性,哪怕每种可能性只有1条数据也没关系,因为可以通过迭代足够的次数来解决。而至于数据的价值,我认为当人为地去定义数据有没有价值的时候,就失去了机器学习的意义了,数据是否有价值,是机器学习过后才能判断的。最后是快速,我觉得这个定义基本上跟数据本身无关。
二、特征
什么是特征?在机器学习里面就是数据在每个维度上的值。但大家有没有想过,其实机器学习的结果,我们所说的Y值,也不过是另一个特征?那机器学习的过程是什么?就是数据从一个特征空间旋转到另一个特征空间,换种说法就是用不同的坐标轴来表示这些数据。而我们要求的Y值,其实也就是其中一个坐标轴的取值。那如果你的思维足够抽象,那么在特征空间转换的过程中,全体数据便要乘以一个转换矩阵,而这个矩阵,也就是我们需要求解的东西。我们知道新特征空间里面每个特征,都是由旧的特征空间的全体特征共同决定的,当然每个特征影响的幅度不一样,而当我们旧的特征空间缺失了一部分的维度的时候,新的特征空间的属性值跟真实值就会有差别,这也就是错误率的本质。有的维度在真实转换矩阵中对应的系数小,缺失后对错误率影响不大,而有的维度在真实转换矩阵中对应的系数大,缺失后影响就很大了。所以,源数据的维度很重要,某个维度有没有价值应该由机器去判断。
三、过拟合
如果说错误率主要跟特征的维度,其实也就是权重矩阵W的维度有关,那么过拟合跟偏离值b的关系就比较大了。数据为什么会过拟合,就是数据在某个维度上的方差跟真实的方差差别太多,这个维度上的可能性捕捉得不够。举个例子,人是有两个性别的,但如果你的调查只针对男性的时候,你的数据就会过拟合,比如男女这个属性的影响可能占20%,也许你的模型在训练时和测试时的差别就有20%。好了,这跟b值有什么关系?你可以这样想,假如男的属性值是1,女的属性值是-1,而真实的权重是0.5,假如你的数据只有男,那是否训练的时候根本不用改变性别对应的权重,只需要在b值上面增加一个0.5(1*0.5)就可以了?其实同样的理由,当我们训练的数据维度比真实维度少的时候,我们少了那部分维度得出的结果值就会用b来替代,如果那部分维度的方差足够小,那么b的真实偏差也会比较小,我们的准确率相对来说也就高,反之亦然。
四、正则化、dropout、稀疏惩罚
这些工具的意义,其实就是人以自己的猜想给模型增加的约束,来弥补数据在分布上与真实集合的差异。因为我们相信,数据在每个维度上都有差异,应该每个维度都考虑到,但我们的数据又不是在每个维度上有着足够的方差,来反应真实的情况,因此我们要求我们的特征矩阵足够平均来考虑到每个维度,以此弥补数据的不足。
五、mini-batch、激活函数、各种梯度下降的方法、深层网络的使用
这些方法不过是弥补计算能力的不足。事实上,如果计算能力足够,在全数据上进行梯度下降,效果肯定是最理想的,同时,每一层有足够多的神经元去进行特征提取,也足够保证稀疏性,这样也可以减少梯度衰减和爆炸产生的影响,如果神经元足够,还可以直接定义每个神经元只有1和0两种输出,这样就直接可以进行信号的缩放了。而激活函数只是为了配合深层网络,来减少每次特征转换的计算量。当然,激活函数也保证了深层网络的非线性,使其不等同一层网络。如果计算能力足够,不使用激活函数的一层网络是最理想的。当然,目前的计算能力还不能满足这些要求,大脑也做不到。
六、线性与非线性
上述的理解和猜想,甚至我们的模型工程,大多建立在线性上的,但真实的世界是非线性的,至少在我们能采集到的维度内是非线性的,但非线性的高维空间,我必须承认我的抽象能力不足。
七、数据、数据、还是数据
至今受到传统的统计思想,大部分人都还是坚持使用抽样和人工筛选特征来作为准备工作。而事实上,机器学习提倡的是端到端的学习,直接对全量数据全部维度(足够贴近真实数据的分布)来进行训练,以可以分辨全部特征维度上的差异。还有一点就是数据的标签,我们在进行有监督机器学习的时候一定要清楚自己的目标,然后把训练数据打上真实的标签,而这个标签的准确率,直接决定了我们能达到的准确率,如果这个标签是人工打的,那么我们能够达到的准确率就是人的极限。
以上就是我对机器学习的一些见解,大部分都是猜想,但都希望证明一点,就是训练数据分布的重要性,也很期待读者来纠错,在共同碰撞中提升对数据和机器学习的认识
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息