logo头像

总有人间一两风,填我十万八千梦

机器学习概念入门

最近在做毕设,需要用到一些机器学习的内容(不要问我为什么,做前端根本没办法毕业!),这篇文章是我看 bilibili 上莫烦系列教程-Tensorflow教程时候做的笔记,都是一些机器学习入门概念,如果你和我一样都是入门选手,我相信这些概念能够帮助到你~

什么是机器学习

机器学习是一帮计算机科学家想让计算机像人一样思考,所研发出来的计算机理论

机器学习分类

监督学习

有数据和标签

非监督学习

只有数据,没有标签

半监督学习

结合了监督学习和非监督学习

强化学习

从经验中总结提升

遗传算法

和强化学习类似,有着适者生存,不适者淘汰准则

什么是神经网络

神经网络是一种数学模型,是存在于计算机的神经系统,由大量的神经元相连接并进行计算,在外界信息的基础上,改变内部的结构,常用来对输入和输出间复杂的关系进行建模。

神经网络由大量的节点和之间的联系构成,负责传递信息和加工信息,神经元也可以通过训练而被强化。

怎么检验神经网络

为了检验、评价神经网络,并努力改善这些问题,我们常会把收集到的数据分为训练数据测试数据,一般用于训练的数据可以是全部数据的百分之 70,剩下的百分之 30 可以用来测试学习结果。接着,对于神经网络的评价,基本上基于这百分之 30 的测试结果。

  • 评价机器学习可以从误差这个值开始,随着训练时间的变长,优秀的神经网络能够预测到更精准的答案,预测的误差也会越小;
  • 除了误差曲线,我们也可以看它的精确度曲线,最好的精度是趋向于百分之百的精度;
  • 对于回归问题,我们可以采用 R2 score 作为评分标准;
  • 还有 F1 score 用来测量不均衡数据的精度。

什么叫过拟合

如下图,训练时的误差比测试误差小,神经网络虽然学习到了知识,但是对于训练数据太过依赖,所以测试数据产生的误差会产生波谷,后面会变大。

在机器学习中,解决过拟合的方法也有很多,比如 L1,L2正规化Dropout方法

什么是交叉验证

交叉验证不仅可以用于神经网络的调参,还可以用于其他机器学习方法的调参,同样是选择你想观看的误差值或者精确度,不过横坐标不再是学习时间,而是你要测试的某一参数,比如说神经网络的层数。。

为什么要特征标准化

我们在机器学习训练之前, 先对数据预先处理一下, 取值跨度大的特征数据, 我们浓缩一下, 跨度小的括展一下, 使得他们的跨度尽量统一,这样可以提升学习效率 通常用于 特征标准化的途径有两种, 一种叫做 min max normalization, 他会将所有特征数据按比例缩放到 0-1 的这个取值区间. 有时也可以是 -1 到 1 的区间. 还有一种叫做 standard deviation normalization, 他会将所有特征数据缩放成平均值为 0, 方差为 1. 使用这些标准化手段. 我们不仅可以快速推进机器学习的学习速度, 还可以避免机器学习学得特扭曲.

区分好用的特征

在选择特征的时候,我们得要时刻回想起这三点.:

  1. 避免无意义的信息
  2. 避免重复性的信息
  3. 避免复杂的信息

这就是我们这次机器学习简介中所聊到的如何区分好用的特征

为什么需要激励函数

因为现实中的问题往往不是线性的,所以需要一个激励函数来扭曲原来的线性结果 你甚至可以创造自己的激励函数来处理自己的问题, 不过要确保的是这些激励函数必须是可以微分的, 因为在 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.这种方式能成功地区分不均衡数据, 给出更好的评判分数.

方法三:重组数据

这是最简单粗暴的方法之一,重新组合不均衡数据,使之均衡。有两种方式:

  1. 复制或者合成少数部分的样本, 使之和多数部分差不多数量
  2. 砍掉一些多数部分, 使两者数量差不多

方法四:使用其他机器学习方法

如果使用的机器学习方法像神经网络等, 在面对不均衡数据时, 通常是束手无策. 不过有些机器学习方法, 像决策树, decision trees 就不会受到不均很数据的影响.

方法五:修改算法

最后一种方法是让自己变得有创造力, 尝试修改算法. 如果你用的是 Sigmoid 的激励函数, activation function, 他会有一个预测门槛, 一般如果输出结果落在门槛的这一段,预测结果为梨, 如果落在这一段, 预测结果为苹果, 不过因为现在的梨是多数派, 我们得调整一下门槛的位置,使得门槛偏向苹果这边, 只有很自信的时候, 模型才会预测这是苹果. 让机器学习,学习到更好的效果.

什么是批标准化

和普通的数据标准化类似, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. Batch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理 Batch normalization 也可以被看做一个层面. 在一层层的添加神经网络的时候, 我们先有数据 X, 再添加全连接层, 全连接层的计算结果会经过 激励函数 成为下一层的输入, 接着重复之前的操作. Batch Normalization (BN) 就被添加在每一个全连接和激励函数之间。

扩展阅读

支付宝打赏 微信打赏

听说赞过就能年薪百万