机器学习第二阶段

初级学习算法在机器学习第一阶段-CSDN博客

以下是高级学习算法内容。

神经网络

在学习神经网络之前,我希望大家可以对神经网络有个宏观了解,神经网络东西很零碎,我们需要在框架里学习

神经网络是一种模仿人脑神经元结构和功能的计算模型,它通过学习数据的模式来识别新的数据。以下是神经网络的一些基本原理:
• 神经元(Neuron):

• 神经网络的基本单元是神经元,也称为节点或感知器。每个神经元接收输入信号,进行加权(加权求和是神经网络中一个基本的数学操作,它涉及到将输入数据与相应的权重相乘,然后将这些乘积相加。这个操作模拟了神经元如何处理信息。)求和,然后通过一个激活函数来决定是否激活。


• 层(Layer):

• 神经元被组织成层。输入层接收原始数据,隐藏层负责提取特征和学习数据的复杂模式,输出层产生最终的预测结果。整个神经网络由这些层组成,每一层都是网络结构的一部分。因此,可以说输入层、隐藏层和输出层都是神经网络中的层,而神经网络包括输入层、一个或多个隐藏层以及输出层。


• 连接权重(Weights):

• 每个神经元之间的连接都有一个权重,这个权重决定了前一个神经元的输出对后一个神经元的影响程度。权重的初始值通常是随机的,并通过训练过程进行调整。(这个过程可以用以下步骤来描述:• 步骤1:接收输入:• 每个神经元接收来自前一层神经元的输出作为输入信号。• 步骤2:加权求和:• 每个输入信号都会乘以其对应的权重,然后这些加权后的信号被求和,可能还会加上一个偏置项(bias)。• 步骤3:应用激活函数:• 求和的结果(加上偏置)被送入一个激活函数,以确定神经元是否应该被激活,并产生输出。• 步骤4:传递输出:• 神经元的输出(激活值)成为下一层神经元的输入,这个过程会重复,直到达到网络的输出层。• 步骤5:权重更新:• 在训练过程中,通过反向传播算法,网络会计算损失函数关于每个权重的梯度,并使用这些梯度来更新权重,以减少预测误差。)


• 偏置(Bias):

• 偏置项加在输入信号的加权和上,它允许模型学习不仅仅是线性可分的数据。


• 激活函数(Activation Function):

• 激活函数决定了神经元是否应该被激活。常见的激活函数包括Sigmoid、Tanh、ReLU等。激活函数引入非线性,使得神经网络能够学习复杂的函数。


• 前向传播(Forward Propagation):

• 在前向传播阶段,输入数据通过网络的每一层,每一层的输出成为下一层的输入,直到最终产生预测结果。


• 损失函数(Loss Function):

• 损失函数衡量模型的预测值和真实值之间的差异。常见的损失函数包括均方误差(MSE)和交叉熵损失。


• 反向传播(Backpropagation):

• 反向传播算法通过计算损失函数关于每个权重的梯度,并使用这些梯度来更新权重,以减少预测误差。


• 优化算法(Optimization Algorithm):

• 优化算法,如梯度下降、随机梯度下降(SGD)、Adam等,用于在训练过程中更新权重和偏置。


• 训练和验证(Training and Validation):

• 训练过程中,模型通过多次迭代学习数据模式。验证集用于评估模型在未见过的数据上的性能,以防止过拟合。


• 过拟合和欠拟合(Overfitting and Underfitting):

• 过拟合是指模型在训练数据上表现很好,但在新数据上表现差。欠拟合是指模型在训练数据上表现就不好,没有捕捉到数据的基本模式。


• 泛化(Generalization):

• 泛化是指模型对新、未见过的数据进行预测的能力。一个好的模型应该具有良好的泛化能力。

神经网络通过这些原理和机制,能够学习复杂的数据模式,并在各种任务中进行预测和分类。随着深度学习的发展,神经网络变得更加强大,能够处理更复杂的任务,如图像识别、自然语言处理等。

神经网络的历史

神经网络来源于人们对人类大脑的模拟,尽管人们对大脑的了解仍然只是初步的,尽管只明白一小部分人脑机理,但是根据这样,我们构造出来的神经网络模型就已经有非常大的效率和作用,说白了就是人脑太深奥了,我们随便取出来一点就已经促成时代发展了,让我们进入人工智能时代了,

这是历史研究进程

这是神经元,是我们神经网络模型的来源

吴恩达老师很看好神经网络,并怀揣着很高的理想教人类学习机器学习,深度学习,希望大家可以学习深造,他希望在有生之年能看到他构想的人工智能,真正的人工智能,能够模仿人类的人工智能,智慧人类      

需求预测

讲了已给需求的例子,然后告诉我们:神经元通过加权接收上一层内容后,在内部进行加权计算,然后根据激活函数判断是否激活

随后举了一个更加高级的例子:告诉我们,神经元与层和预测之间的关系,

解释;比如我们要预测是否畅销,输入层的输入有成本价格,市场营销,运费和材料,隐藏层是客户是否支付得起,这取决于成本价格,运费,在下一个神经元是用户认为他值不值,这要考虑市场也营销,材料,在要考虑他的品质价值,这要考虑价格,材料,和市场营销,就是这样我们在神经元之间设定权重才挑选影响因素,比如看品牌价值,要考虑价格,材料,和市场营销,那么我们就在神经元之间设置权重,挑出来有影响的因素,然后总结每一个隐藏层的结果,预测是否畅销

吴老师说把输出层挡上,只显示隐藏层的末尾和输出层,这是线性回归,细看看,确实是这样,线性回归特征要我们自己决定,神经网络就不用,你全部输入进去,机制会自己挑选出有用特征

这是神经网络简化表示:

例子:图像识别

第一层找出横线竖线(你有没有想过怎么找横线竖线,我想了想可能是设定了横线竖线的亮度图的各部分亮度,横线在某一片区域亮度大,随后通过识别这条线,在权重的加持下,如果这条线,符合横线的亮度数据,就算是横线,比如255个表格,在横线的部分设定权重大,周围就权重小,外围就权重为0,然后算数据,如果这条线通过权重计算后仍然超过了横线的规定值,那他就是横线了,这只是我个人理解,如果你没理解我的意思也没有影响,继续往下看就好,我只是理解并且记录了一下),第二层通过将横线竖线组合在一起找出你的鼻子喝面部器官,第三步将你的器官组合在一起,找你数据库里的你录入的脸,识别特征和你的脸是否一致,如果是你的脸的话特征都是差不多的或者是一样的,就算是识别到你了

神经网络中的层

神经网络里存在层,每一层都会都会进行计算和识别特征,挑选特征,比如人脸,挑选出你的鼻子,在挑选出你鼻子的特征,再组成人脸,和数据库中的人脸对比,哪个人脸数据跟你相似,就是那个人。层的作用就是挑选特征,分层挑选你的特征。

这张图的意思是他内部进行激活函数的计算,计算是否激活呢

更复杂的神经网络

输入层一个,多个隐藏层,听说最多的能有好几百个,最后是输出层,上一层和下一层神经元传输也有权重,神经元内部激活函数计算的z的计算的时候也有权重,算z的权重就是w,然后激活挑选特征。权重往往伴随着偏置,这个偏置在z的计算时候表现为b,神经元之间的w和b后面再说

做出预测(向前传播)

这个就是我说的图表,就是识别横线竖线的那个道理一样,我的思路来源于此

输出数据和输入数据怎么个事呢,往下看

在输入层,我们会输入一堆矩阵数,然后以矩阵或者向量输出,然后在下一层计算,这里的a上边的箭头就是向量,向量进向量出,计算方法要靠线性代数,后面会讲。

代码中的推理(怎么靠代码完成这个神经网络呢)

这里调用了数据库,numpy,units表示这一层神经元个数,activation表示使用激活函数那种类型,在这里是我们熟悉的sigmoid,我们算出层这一级的a1a2,model是训练模型的数据库,把层和层之间联系起来

Tenflow中的数据

视频里的内容的意思就是告诉你Tenflow也可以表示,代替dense函数,这是老的表示方式,大概这样

上面那串代码不是调用了数据库了嘛,这个数据库里头函数的底层逻辑,吴老师希望你能掌握底层逻辑,有能力创新出更有力量效率的函数和数据库。

底层逻辑:

复杂版

简化版

上手训练模型


• 使用TensorFlow框架,特别是其Keras API来构建一个神经网络模型。

• 模型是一个顺序模型(Sequential),包含以下层:

• 第一层:Dense层,有25个单元(units),激活函数为sigmoid。

• 第二层:Dense层,有15个单元,激活函数为sigmoid。

• 第三层:Dense层,有15个单元,激活函数为sigmoid。

• 第四层:Dense层,有1个单元,激活函数为sigmoid。

• 使用二元交叉熵(BinaryCrossentropy)作为损失函数。

• 模型使用`model.compile`方法进行编译,指定损失函数。

• 使用`model.fit`方法训练模型,提供训练数据`X`和`Y`,设置训练周期(epochs)为100次。

描述了一个简单的神经网络模型的构建和训练过程。

sigmoid的替代函数

激活函数有很多种类,据我所知目前就有四种

第一种是sigmoid,第二种是relu激活函数,第三种是线性激活函数,第四种是softmax激活函数,这四种激活函数都有属于对应他们自己的不同的情况,让我们一起来详细了解一下 relu激活函数

sigmoid激活函数是有缺点的,业内现在在隐藏层基本上全都是用relu激活函数,原因:其中一种原因就是sigmoid激活函数的的值在0-1之内,这个如果用用户购买意愿来表示的话,那么这个sigmoid的激活函数只能把用户的意愿表示在0-1之间,当然用户的意愿可能会更加强烈,不只是仅限于这个范围,这是吴老师的解释,当然通过ai搜索也可以知道,如果后面的输入接收的是0-1,而一直这么接收0-1,数值会越来越小,训练速度会越来越慢,而relu可以表示0-max最大值,这样可以提高效率。

     

这是线性几乎激活函数,也有它的好处

激活函数的选择

四种激活函数都是在不同的情况下选择出来的,不同情况对应不同的激活函数。

吴老师的视频里就是解释情况选择,这里我找了ai的总结,这个总结的非常不错,

这里我说明一下怎么看什么情况,我们都知道,神经网络中第0层是输入层,中间都是隐藏层,末尾是输入层,隐藏层没有特殊需求的话行业内都是在用relu函数,输出层我们也会用激活函数的处理的,我们输出层的激活函数的选择是看情况的这个情况就是上面的内种情况,也就是对应哪种问题

分类问题
二分类问题:

对于二分类问题,通常使用sigmoid激活函数。Sigmoid函数的输出范围在(0,1)之间,可以将其解释为概率,适用于输出两个类别的情况。


多分类问题:

对于多分类问题,通常使用softmax激活函数。Softmax函数可以将输出转换为概率分布,使得所有类别的概率之和为1,适用于输出多个类别的情况。

回归预测问题
结果有正有负:股票增降

如果输出结果可以是正数或负数,这通常意味着网络需要捕捉更复杂的关系,并不特定于激活函数的选择。实际上,线性激活函数(即没有激活函数,或者称为identity函数)通常用于输出层,当输出值的范围不受限制时。例如,在回归问题中,输出可以是任何实数,因此可以使用线性激活函数。


结果只能是非负:某个行业工资挣多少

如果输出结果必须是非负的,那么可以选择ReLU(Rectified Linear Unit)激活函数。ReLU函数的输出为输入值的正部分,即如果输入为负,则输出为0;如果输入为正,则输出为输入值本身。这使得ReLU在处理非负输出时非常有用,尤其是在隐藏层中,以减少梯度消失问题。

总结来说,激活函数的选择应该基于任务的性质和输出层的需求。对于二分类问题,使用sigmoid;对于多分类问题,使用softmax;对于输出可以是任意实数的回归问题,可以使用线性激活函数;对于输出必须是非负的情况,可以使用ReLU。这些选择有助于模型更好地学习和表示数据中的复杂关系。

多类

softmax函数我们从来没有提到过,当然了,这个函数跟我们的多类问题有关系,什么是多类问题,其实二分类问题就是多类问题中的一种,多类问题就是结果有很多,你要预测每种情况的可能性,并设置阈值预测那种情况会发生(最有可能发生,因为只能选择一种),下划线内容要切记,因为我们后面会说另一种分类问题-多标签的分类问题,这类问题是有多种类别,你需要对每一个类别进行判断,结果可能是多种,比如你需要判断斑马线上的人  汽车  自行车,有可能都有,这是多标签分类,但是在多类中,你只能通过概率预测其中的一种,说白了一个是多选一个是单选

在机器学习中,多类问题(Multiclass Problem)是指目标变量(也称为标签或类别)有多个类别的问题,并且我们希望模型能够预测这些类别中的一个。与二分类问题(Binary Classification)不同,二分类问题的目标变量只有两个类别(如是/否,正/负),而多类问题则涉及三个或更多的类别。多类问题的例子包括:1. 文本分类:将新闻文章分类为体育、政治、科技等不同的类别。2. 图像识别:识别图像中的对象是猫、狗、车还是其他物体。3. 情感分析:将电影评论分类为正面、负面或中性。在多类问题中,模型需要学习如何区分多个类别,并为每个输入样本分配正确的类别标签。常用的算法包括:• 逻辑回归:虽然逻辑回归通常用于二分类问题,但通过使用“一对多”(One-vs-All)策略,它也可以扩展到多类问题。

多类问题的激活函数-softmax

什么是softmax,我也不知道就跟relu函数一样,很多都是老外起的名字,我们需要做的就是研究明白他,应用于现实,学来为国家做奉献.

softmax的表示

图片解释:上图a1是激活函数的预测结果为是ture的概率,当然了,a2是1-a1,这个不重要,我们的多类softmax函数也是大差不差的原理,途中右侧z是一样算的,乘上自己的w,这个w和偏置b通常是训练出来的,看a的部分,a1是结果为a1部分的概率,同理a2a3a4也一样

损失函数

softmax和逻辑函数一样,他也有自己的损失函数,

看右侧图片就是他的损失函数

函数的代码实现,前面都一样,就是蓝色划线地方加了个损失函数,这个损失函数稀疏范畴交叉损失函数,对应的是softmax激活函数的损失函数,最后编译调用损失函数,然后fit训练。

多个输出的分类

还记不记得我刚才划线的那个分类问题的说明,刚才解释过一次了,因为我们后面会说另一种分类问题-多标签的分类问题,这类问题是有多种类别,你需要对每一个类别进行判断,结果可能是多种,比如你需要判断斑马线上的人  汽车  自行车,有可能都有,这是多标签分类,但是在多类中,你只能通过概率预测其中的一种,说白了一个是多选一个是单选,

这是斑马线判断人,电动车,汽车啥的,每一种都有可能是,

——————————————————————————————————————————

往下大多数是模型优化和后续评估处理问题了

高级优化方法

这个优化是针对于学习率阿拉法做的优化,我们正常的阿拉法是固定的,有时候很小阿拉法只是一条直线前进,这会很慢,效率低,如果阿拉法大了,就会反复横跳,有个老外发明了一个算法,自动调整合适的阿拉法,具体解释在第三阶段,这里我们只需要知道怎么用它

不同的是这里model.compile(模型编译)这里加了个op啥啥啥的,这个就是自动调整阿拉法学习率的,后面的不用管默认就行,让你自己设置一个默认初始学习率,这个学习率后面会根据训练变的

模型优化

模型评估

在机器学习中,模型评估是一个非常重要的步骤,它帮助我们了解模型的性能,并指导我们进行模型选择和优化。以下是一些常用的模型评估方法:


• 交叉验证(Cross-Validation):

• K折交叉验证:将数据集分成K个子集,每次留一个子集作为测试集,其余作为训练集,重复K次,最后取平均值。

• 留一法(Leave-One-Out Cross-Validation,LOOCV):每次只留下一个样本作为测试集,其余作为训练集。


• 分割数据集:

• 将数据集分为训练集、验证集和测试集。训练集用于训练模型,验证集用于模型选择和超参数调整,测试集用于最终评估模型性能。


• 性能指标:

• 准确率(Accuracy):正确预测的样本数占总样本数的比例。

• 精确率(Precision):正确预测为正的样本数占所有预测为正的样本数的比例。

• 召回率(Recall):正确预测为正的样本数占所有实际为正的样本数的比例。

• F1分数(F1 Score):精确率和召回率的调和平均值。

• ROC曲线和AUC值:ROC曲线展示了在不同阈值下模型的真正例率(TPR)和假正例率(FPR),AUC值表示模型区分正负样本的能力。


• 混淆矩阵(Confusion Matrix):

• 一个表格,用于可视化模型的性能,包括真正例(TP)、假正例(FP)、真负例(TN)和假负例(FN)。


• 误差分析:

• 分析模型预测错误的样本,了解模型在哪些类型的样本上表现不佳,从而指导模型改进。


• 学习曲线(Learning Curves):

• 通过绘制训练集和验证集的性能随训练样本数量增加的变化,可以判断模型是否过拟合或欠拟合。


• 正则化方法:

• 如L1和L2正则化,通过惩罚大的权重值来防止过拟合。


• 集成方法:

• 如Bagging、Boosting和Stacking,通过组合多个模型来提高预测性能和稳定性。


• 超参数优化:

• 使用网格搜索(Grid Search)、随机搜索(Random Search)或贝叶斯优化等方法来寻找最优的模型参数。


• 模型解释性工具:

• 如特征重要性、部分依赖图(Partial Dependence Plots)和SHAP值,帮助理解模型的预测过程。

选择哪种评估方法取决于具体的应用场景、数据集的特性以及模型的类型。通常,我们会结合多种方法来全面评估模型的性能。

模型选择和交叉验证测试集

模型选择的重要性:

吴恩达强调了模型选择的重要性,指出一个模型在训练集上拟合得很好,并不意味着它对新样本的泛化能力就一定好。因此,需要使用验证集来帮助选择模型。

训练集,验证集,测试集的划分:

建议将数据集分为三个部分:训练集、验证集(交叉验证集)、测试集。通常,训练集用于训练模型,验证集用于模型选择和超参数调整,测试集用于最终评估模型的泛化能力

验证集(交叉验证集)的作用:

 交叉验证集用于模型选择,即在多个模型或参数设置中选择一个使得交叉验证误差最小的模型。这样做可以减少模型选择的偏差,提高模型的泛化能力。

模型选择的方法

使用交叉验证集来选择模型的具体步骤:

1. 使用训练集训练多个模型。

2. 用这些模型分别对交叉验证集计算得出交叉验证误差。

3. 选择代价函数值最小的模型。

4. 用选出的模型对测试集计算得出推广误差

误差分析(偏差和方差)

偏差和方差的概念:

 偏差(Bias):表示模型对于训练数据的拟合程度。高偏差意味着模型过于简单,无法捕捉数据的复杂性,导致欠拟合。偏差过高对应的是欠拟合

方差(Variance):表示模型对于训练数据的敏感程度。高方差意味着模型过于复杂,几乎完美地适应训练数据,但在未见过的数据上表现较差,导致过拟合。方差过高对应的是过拟合

评估偏差和方差:

• 通过绘制训练集误差和交叉验证集误差随模型复杂度(例如多项式次数)的变化图表,可以直观地判断模型的问题。

• 训练集误差和交叉验证集误差近似时:说明存在偏差问题(欠拟合)。

• 交叉验证集误差远大于训练集误差时:暗示了方差问题(过拟合)。

如图,第一个坐标系表示方差和偏差都很高,j(train)指的是训练集,对训练过的数据的预测能力,j(cv)指的是测试集,也就是对新数据的预测能力

第二个坐标系指的是升度(升度指的是增加x的幂)合适

第三个坐标系指的是jtrain低,jcv高,这种情况就是过拟合了。

途中表示的是逐渐升度(升度指的是增加x的幂),j(cv)和j(train)的变化,从这张图我们可以解读出来两个信息,1,过拟合和欠拟合,j(cv)和j(train)都很高,就是欠拟合,当j(train)很低,但是对新数据预测的时候j(cv)很高,说明他是过拟合了。这张图死记,后面会有相似的容易混

第一种(都很高)就是高偏差(欠拟合),中间就是正合适,模型最佳,第三种就是高方差(过拟合)

正则化偏差和方差

回想一下我们正则化是为了什么,正则化是为了让我们的函数有更强的泛化能力,也就是减小无用特征的系数,减小这些系数会怎样呢,也就是变相的让有用的发挥作用,减少函数的复杂性,不是那么复杂了,也就减小方差了(延缓过拟合)

吴恩达教授在机器学习课程中关于正则化、偏差和方差的讲解主要包括以下几个方面:
• 正则化损失函数:

• 正则化是为了防止模型过拟合而对损失函数进行修改的技术。在吴恩达的课程中,他介绍了正则化线性回归,其中损失函数不仅包括了预测误差,还包括了一个正则化项。这个正则化项通常是模型参数的平方和乘以一个正则化参数λ(lambda),即:

• 这个正则化项有助于减少模型参数的值,从而降低模型复杂度,防止过拟合。

这里的内容和前面也有重复的,但是是拓展和延申,建议看完

在前面没讲过正则化的超参数的变化j(cv)和j(train)会怎么变化,这里讲一下

当这个拉姆达也就是正则化的时候多出来的一项的系数,这个系数变化,如果这个系数特别小,就相当于没怎么正则化,那就仍然会过拟合,过拟合特征是啥呀,看前面我强调的内张图,j(cv)高,j(train)低,这不就连上了,这个图就是前面的图调过来,然后往后看,适中是最好的,当这个超参数特别大的时候,各个参数都会特别小,此时预测线线性回归预测模型接近于一条直线

学习曲线

吴恩达教授在其机器学习课程中关于学习曲线的讲解主要包括以下几个方面:


• 学习曲线的作用:

• 学习曲线用于检验学习算法是否正常工作,以及帮助改进学习算法。

• 通过学习曲线可以查看算法是否存在偏差或方差问题。


• 学习曲线的定义:

• 学习曲线通常包括训练集和验证集的误差曲线。

• 以训练集样本数量为横坐标,以平均误差平方和为纵坐标绘制曲线,观察训练误差随训练样本集大小的变化。


• 学习曲线的变化趋势:

• 一般情况下,随着训练样本的增加,训练集的平均误差平方和会增加,而验证集上的平均误差平方和会减少。


• 高偏差情形下的学习曲线:

• 如果出现高偏差情况(例如使用线性模型),学习曲线会显示出训练误差和验证误差都较高,且随着训练样本的增加,误差并没有明显下降。


• 高方差情形下的学习曲线:

• 如果出现高方差情况,学习曲线会显示出训练误差较低,但验证误差较高,且随着训练样本的增加,验证误差没有明显下降。

随着训练例子的增加,两个j会趋向于这样。

高偏差和高方差的解决办法

你可以先把右边藏起来,自己判断一下这个解决办法是哪个类型.第一个的意思是增加例子,第二:减少特征,第三个增加特征,第四个升度,第五个减少拉姆达,第六个增加拉姆达,这里的拉姆达指的是正则化系数。variance方差,bias偏差  我的解读:如果你过拟合就要采用126的解决办法,增加例子,这个前面说过,减少特征项跟正则化差不多,第六个增加拉姆达,可以往上划一下,看一下拉姆达对jcv和jtrain的影响图,不多解释,偏差也差不多,特征少了模型预测不够准确,就比如二次函数的实际你用线性预测肯定不行,升度看看前面的图(在误差分析)减小拉姆达。

偏差和方差与神经网络

神经网络的成本函数也可以正则化,kernel内块就是正则化,需要设置一个默认超参数拉姆达,超参数不懂得去问问ai

只需添加一个代码即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值