当前位置:首页|资讯|深度学习|机器学习

图神经网络入门(2)——深度学习基础

作者:梦想成真的小鱼发布时间:2024-02-18

课件源于2023 http://web.stanford.edu/class/cs224w/

视频源于深度学习基础(点击跳转)

机器学习是一个优化问题。

监督学习(给x预测标签y,训练集中y没有缺失)是一个优化问题。

输入的x可以是上述数据结构。其中,可以是完整的图。

%5Ctheta是参数。主要使用L2损失。

一个常见的分类损失:交叉熵。

源自:https://www.zhihu.com/tardis/zm/art/35709485?source_id=1003

此处分类变量y用独热编码表示。并使用softmax进行归一化。

那么怎么去优化这个目标函数?

我们可以通过损失函数评估参数。可以通过梯度向量发现哪个方向的损失函数增加最快。于是就是这个的反方向。

梯度下降算法如下:

迭代算法:在梯度(相反)方向反复更新权值,直至收敛。注意右上角的公式:

%5Ctheta%20%5Cleftarrow%20%5Ctheta%20-%20%5Ceta%20%E2%96%BD_%7B%5Ctheta%7DL

%5Ceta表示学习率可以理解为步长。

最理想的状态是梯度为0,达到了函数平坦的地方。

在实践中,如果它不再提高验证集(我们从训练中保留的数据集的一部分)的性能,我们就停止训练。

但有时候数据集太大,不太可能遍历数据集中所有的点,因此采用随机梯度下降(SGD)。

在每一步中,选择一个包含数据集子集的不同minibatch数据库,将其用作输入。

根据上述我们引入了批处理的概念,是我们评估梯度的数据子集。我们不是在整个训练数据集上对其进行评估,而是在训练数据集上的一个小子集上对其进行评估。可能是数百个也可能是数千个示例。Batch size(批量大小)是小批量中数据点的数量。通常我们喜欢使批次更大,但更大的批次会使优化变慢。我们在给定的小批量上评估梯度。An epoch 是对数据集的完整传递。所以迭代的次数是等于数据集大小和Batch size的比例。

如果创建的批次随机,那么SGD是完整梯度的无偏估计。当然收敛速度是没有保证的。这意味着他需要调整学习率。而这个SGD想法是一种常见的核心想法。SGD是全梯度的无偏估计,但不能保证收敛速度,在实践中经常需要调整学习率,然后还有常见的优化器进行优化比如: Adam, Adagrad, Adadelta, RMSprop…本质上,所有人都使用这个核心思想,即选择数据集的子集,评估其上的梯度。

接下来讲讲实际步骤:

对于深度学习,f可能非常复杂,因此不需要将f具体写出来。
如果𝑓返回一个标量,那么𝑊是一个可学习的向量。

如果𝑓返回一个向量,那么𝑊就是权重矩阵,也是𝑓的雅可比矩阵。

有一些介绍:https://blog.csdn.net/gwplovekimi/article/details/104977255

源自:https://zhuanlan.zhihu.com/p/39762178

通过链式规则进行派生如下:

反向传播:利用链式法则传播中间阶跃的梯度,最终得到函数的梯度。Θ

比如例子上两层线性网络如下:

隐层:输入的中间表示𝒙。

%20%E2%84%8E(%F0%9D%91%A5)%20%3D%20%F0%9D%91%8A_1%F0%9D%92%99表示隐含层。

如果我们做二元分类权重矩阵会变成向量。

w.r.t:with respect to的缩写,意思是关于、谈到、涉及等。
我们可以引入非线性函数,ReLU或者Sigmoid。

上述通过乘以Sigmoid就是非线性函数。

总结如下:

下集预告:



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1