监督学习、无监督学习、半监督学习、强化学习是我们日常接触到的常见的四个机器学习方法:
- - 监督学习:通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出。
- - 无监督学习:它与监督学习的不同之处,在于我们事先没有任何训练样本,而需要直接对数据进行建模。
- - 半监督学习 :在训练阶段结合了大量未标记的数据和少量标签数据。与使用所有标签数据的模型相比,使用训练集的训练模型在训练时可以更为准确。
- - 强化学习:我们设定一个回报函数(reward function),通过这个函数来确认否越来越接近目标,类似我们训练宠物,如果做对了就给他奖励,做错了就给予惩罚,最后来达到我们的训练目的。
损失函数(Loss Function)
损失函数(loss function)是用来估量模型的预测值(我们例子中的output)与真实值(例子中的y_train)的不一致程度,它是一个非负实值函数,损失函数越小,模型的鲁棒性就越好。我们训练模型的过程,就是通过不断的迭代计算,使用梯度下降的优化算法,使得损失函数越来越小。损失函数越小就表示算法达到意义上的最优。这里有一个重点:因为PyTorch是使用mini-batch来进行计算的,所以损失函数的计算出来的结果已经对mini-batch取了平均。
方差/偏差
- - 偏差度量了学习算法的期望预测与真实结果的偏离程序,即刻画了学习算法本身的拟合能力
- - 方差度量了同样大小的训练集的变动所导致的学习性能的变化,即模型的泛化能力
- - 高偏差(high bias)的情况,一般称为欠拟合(underfitting),即我们的模型并没有很好的去适配现有的数据,拟合度不够。
- - 高方差(high variance)的情况一般称作过拟合(overfitting),即模型对于训练数据拟合度太高了,失去了泛化的能力。
如何解决这两种情况呢?
欠拟合:
- - 增加网络结构,如增加隐藏层数目;
- - 训练更长时间;
- - 寻找合适的网络架构,使用更大的NN结构;
过拟合 :
- - 使用更多的数据;
- - 正则化( regularization);
- - 寻找合适的网络结构;
正则化:
利用正则化来解决High variance 的问题,正则化是在 Cost function 中加入一项正则化项,惩罚模型的复杂度,这里我们简单的介绍一下正则化的概念。
L1损失函数基础上加上权重参数的绝对值 L2损失函数基础上加上权重参数的平方和
L1正则化就是在 loss function 后面加上L1范数,这样比较容易求到稀疏解。L2 正则化是在 LF 后面加 L2范数 平方,相比L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(不等0)的维度比较多,降低模型的复杂度。