机器学习概念入门
最近在做毕设,需要用到一些机器学习的内容(不要问我为什么,做前端根本没办法毕业!),这篇文章是我看 bilibili 上莫烦系列教程-Tensorflow教程时候做的笔记,都是一些机器学习入门概念,如果你和我一样都是入门选手,我相信这些概念能够帮助到你~
什么是机器学习
机器学习是一帮计算机科学家想让计算机像人一样思考,所研发出来的计算机理论
机器学习分类
监督学习
有数据和标签
非监督学习
只有数据,没有标签
半监督学习
结合了监督学习和非监督学习
强化学习
从经验中总结提升
遗传算法
和强化学习类似,有着适者生存,不适者淘汰准则
什么是神经网络
神经网络是一种数学模型,是存在于计算机的神经系统,由大量的神经元相连接并进行计算,在外界信息的基础上,改变内部的结构,常用来对输入和输出间复杂的关系进行建模。
神经网络由大量的节点和之间的联系构成,负责传递信息和加工信息,神经元也可以通过训练而被强化。
怎么检验神经网络
为了检验、评价神经网络,并努力改善这些问题,我们常会把收集到的数据分为训练数据和测试数据,一般用于训练的数据可以是全部数据的百分之 70,剩下的百分之 30 可以用来测试学习结果。接着,对于神经网络的评价,基本上基于这百分之 30 的测试结果。
- 评价机器学习可以从误差这个值开始,随着训练时间的变长,优秀的神经网络能够预测到更精准的答案,预测的误差也会越小;
- 除了误差曲线,我们也可以看它的精确度曲线,最好的精度是趋向于百分之百的精度;
- 对于回归问题,我们可以采用 R2 score 作为评分标准;
- 还有 F1 score 用来测量不均衡数据的精度。
什么叫过拟合
如下图,训练时的误差比测试误差小,神经网络虽然学习到了知识,但是对于训练数据太过依赖,所以测试数据产生的误差会产生波谷,后面会变大。
在机器学习中,解决过拟合的方法也有很多,比如 L1,L2正规化和 Dropout方法
什么是交叉验证
交叉验证不仅可以用于神经网络的调参,还可以用于其他机器学习方法的调参,同样是选择你想观看的误差值或者精确度,不过横坐标不再是学习时间,而是你要测试的某一参数,比如说神经网络的层数。。
为什么要特征标准化
我们在机器学习训练之前, 先对数据预先处理一下, 取值跨度大的特征数据, 我们浓缩一下, 跨度小的括展一下, 使得他们的跨度尽量统一,这样可以提升学习效率 通常用于 特征标准化的途径有两种, 一种叫做 min max normalization, 他会将所有特征数据按比例缩放到 0-1 的这个取值区间. 有时也可以是 -1 到 1 的区间. 还有一种叫做 standard deviation normalization, 他会将所有特征数据缩放成平均值为 0, 方差为 1. 使用这些标准化手段. 我们不仅可以快速推进机器学习的学习速度, 还可以避免机器学习学得特扭曲.
区分好用的特征
在选择特征的时候,我们得要时刻回想起这三点.:
- 避免无意义的信息
- 避免重复性的信息
- 避免复杂的信息
这就是我们这次机器学习简介中所聊到的如何区分好用的特征
为什么需要激励函数
因为现实中的问题往往不是线性的,所以需要一个激励函数来扭曲原来的线性结果 你甚至可以创造自己的激励函数来处理自己的问题, 不过要确保的是这些激励函数必须是可以微分的, 因为在 backpropagation 误差反向传递的时候, 只有这些可微分的激励函数才能把误差传递回去. 在少量层结构中, 我们可以尝试很多种不同的激励函数. 在卷积神经网络 Convolutional neural networks 的卷积层中, 推荐的激励函数是 relu. 在循环神经网络中 recurrent neural networks, 推荐的是 tanh 或者是 relu
如何加速神经网络训练
越复杂的神经网络,越多的数据,我们需要在训练神经网络的过程上花费的时间也就越多;原因很简单,就是因为计算量太大了。可是往往有时候为了解决复杂的问题, 复杂的结构和大数据又是不能避免的, 所以我们需要寻找一些方法, 让神经网络聪明起来, 快起来. 包括以下几种模式:
- Stochastic Gradient Descent (SGD)
- Momentum
- AdaGrad
- RMSProp
- Adam
关于这几种方法的具体原理,可以点击这里观看莫烦的讲解
如何处理不均衡数据
不均衡的数据预测起来很简单. 永远都猜多的那一方面准没错. 没错, 机器也懂这个小伎俩. 所以机器学到最后, 学乖了, 每次都预测多数派. 解决的方法有几种, 我们来谈谈.
方法一:想办法获取更多数据
方法二:更换评判方式
通常, 我们会用到准确率 accuracy, 或者误差 cost 来判断机器学习的成果. 可是这些评判方法在不均衡数据面前, 高的准确率和低的误差变得没那么重要. 所以我们得换一种方式评判. 通过 confusion matrix 来计算 precision 和 recall, 然后通过 precision 和 recall 再计算f1 score.这种方式能成功地区分不均衡数据, 给出更好的评判分数.
方法三:重组数据
这是最简单粗暴的方法之一,重新组合不均衡数据,使之均衡。有两种方式:
- 复制或者合成少数部分的样本, 使之和多数部分差不多数量
- 砍掉一些多数部分, 使两者数量差不多
方法四:使用其他机器学习方法
如果使用的机器学习方法像神经网络等, 在面对不均衡数据时, 通常是束手无策. 不过有些机器学习方法, 像决策树, decision trees 就不会受到不均很数据的影响.
方法五:修改算法
最后一种方法是让自己变得有创造力, 尝试修改算法. 如果你用的是 Sigmoid 的激励函数, activation function, 他会有一个预测门槛, 一般如果输出结果落在门槛的这一段,预测结果为梨, 如果落在这一段, 预测结果为苹果, 不过因为现在的梨是多数派, 我们得调整一下门槛的位置,使得门槛偏向苹果这边, 只有很自信的时候, 模型才会预测这是苹果. 让机器学习,学习到更好的效果.
什么是批标准化
和普通的数据标准化类似, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. Batch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理 Batch normalization 也可以被看做一个层面. 在一层层的添加神经网络的时候, 我们先有数据 X, 再添加全连接层, 全连接层的计算结果会经过 激励函数 成为下一层的输入, 接着重复之前的操作. Batch Normalization (BN) 就被添加在每一个全连接和激励函数之间。
扩展阅读
听说赞过就能年薪百万