本部分内容更偏向于训练过程涉及的概念。
----------------------------------------------------------------------------------------------------------------------
一、机器学习
如果把算法比作带有输入和输出的机器,那么能够让算法提取数据中蕴含的规律,通过利用数据,训练出模型,然后使用模型预测的一种方法,这就叫机器学习。 (其实单看这个概念还是很抽象)
监督学习:输入机器的数据是带有标签的。
无监督学习:输入机器的数据不带有标签。
二、回归问题
说来说去其实我觉得这就是高中数学统计那部分的知识,根据数据分布特点去选择合适的函数,再根据这些数据去计算这个函数的参数,比如y=ax+b中的a,b,其中a可称作权重,b可称作偏置。参数算完之后一个完整、具体的函数(模型)就出来了,然后根据这个函数预测未知数值,比如计算出来的函数是用来预测每年国家的GDP值的,那么在2023年还未到来之际,我就将“2023”代入函数得出预测值,这个预测值也是具体的数值。
哈哈哈哈哈,博客也要可可爱爱!!!
三、分类问题
我觉得分类问题也可以叫离散问题或者0-1问题;分类问题可分为二分类问题,即输出结果就俩,非黑即白;还有一个就是多分类问题。
分类问题要引入非线性函数,比如sigmoid函数(激活函数之一,第二次培训详细学习)。当然这个仍然需要调整参数值让模型不断改变以匹配数据点。从下图公式可以看出分类问题中,在引入非线性函数前,需要先引入类似线性回归问题中的线性函数(或其他什么合适的函数)。
(sigmoid函数)
(非线性函数)
四、区分线性问题与回归问题
(1)不同之处:
①输出不同:回归问题输出是定量(比如说有具体的数值),分类问题输出是定性(就是描述性语言,如好坏或阴晴);
②应用场景不同:回归问题通常是用来预测一个值,如预测房价或一个产品的实际价格为500元,通过回归分析预测值为499元。 分类问题是用于将事物打上一个标签,通常结果为离散值,例如判断一幅图片上的动物是一只猫还是一只狗。分类通常是建立在回归之上,分类的最后一层通常要使用softmax函数、sigmoid函数(该函数一般用于二分类问题)进行判断其所属类别。
(2)相同之处:
① 过程一致:*1数据集特定规律—>*2选择函数(模型)—>*3确定参数实现模型—>*4模型评价(一般用Loss函数作为评估指标)—>*5如果模型不好(评估指标结果不理想)就得继续更新a、b(采用反向传播、梯度下降方法实现更新),再进行评估,直到找到最恰当的a、b(即参数到达无法更新的地步)—>*6得到完整具体的模型预测任务。
② 回归和分类可以相互转化:分类模型可将回归模型的输出离散化,回归模型也可将分类模型的输出连续化。例如设定回归问题达到某阈值将其判定为好,未达到判定为不好,这样就从回归问题转化为分类问题。
五、训练过程概述
确定了问题的模型后就可以搭建网络来实现该模型,至于如何搭建网络将在下一次培训中作出介绍。那么搭建完网络之后就可以进入模型训练环节,即选出该模型适合解决该问题的最佳参数。整个训练过程为前面所描述的*3~*5。所以接下来就要介绍训练中涉及到的正向传播、损失函数、反向传播、梯度下降、迭代次数。
六、正向传播
若把部分参数(如权重和偏置)也看作输入,那么它将同原始数据一起进入到网络各层中,前面定义好的网络层会根据这些输入算出结果,这些结果又作为输入传递到下一个网络层(即正向传播过程)。
七、损失函数(公式有多种,图中所示只是其中之一)
损失函数作用:将模型与数据点之间的距离差之和作为衡量模型匹配好坏的标准,误差越小, 匹配程度越大。其实吧这个损失函数类似高中统计那部分学的的什么卡方检验、相关系数、相关性的概念嘛,不多说了哈哈哈哈。
八、部分参数初始化、反向传播和梯度下降
反向传播是用来快速求解目标函数关于各个参数的梯度;
梯度下降则根据计算得到的梯度来更新各个权重。
损失函数(纵轴)与权重(横轴)构成的梯度下降如下图所示。当然,偏置b和损失函数也有类似的梯度下降关系图,若与w一同放在图中则构成三维坐标形式下的梯度图。图中所示的学习率之后会介绍。
九、训练过程实现简单示例
输入-->正向传播-->Loss计算-->反向传播、梯度下降-->更新参数
十一、迭代
(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取 batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch: 1个epoch等于使用训练集中的全部样本训练一次;
举个例子,训练集有1000个样本,batchsize=10,那么:
训练完整个样本集需要:
100次iteration,1次epoch。
原文链接:https://blog.csdn.net/program_developer/article/details/78597738