动手学深度学习笔记1线性回归

本文从线性回归出发,深入探讨了softmax在分类问题中的应用,以及多层感知机(MLP)如何通过引入非线性变换解决线性模型的局限性。介绍了损失函数、优化算法及激活函数的选择策略。

线性回归、softmax与多层感知机

一、线性回归

1.线性模型:
在这里插入图片描述
2.损失函数
在这里插入图片描述
第一个是单样本的损失,第二个是多样本的损失
3.优化函数-SGD:
常用的是小批量随机梯度下降:
在这里插入图片描述
优化函数的两个步骤:
(i)初始化模型参数,一般来说使用随机初始化;
(ii)我们在数据上迭代多次,通过在负梯度方向移动参数来更新每个参数。
4.矢量计算
向量相加的一种方法是,将这两个向量按元素逐一做标量加法。
向量相加的另一种方法是,将这两个向量直接做矢量加法。
注意:线性回归得到矩阵的大小,要看线性回归W与X的矩阵乘法。

二、softmax
1.softmax基本概念
①应用在分类问题中
②可以用一个单层的神经网络来表达
在这里插入图片描述
③softmax运算符的表达式:
在这里插入图片描述
注意到其中所有类的指数概率和是1
另外有
在这里插入图片描述
④小批量softmax计算的表达式:
在这里插入图片描述
⑤交叉熵损失函数:
解决问题:平方损失过为严格
假设训练数据集的样本数为nn,交叉熵损失函数定义为
在这里插入图片描述
其中,
在这里插入图片描述
即,最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。

三、多层感知机
1.多层感知机(multiple perceptron,MLP)的基本概念
表达公式:
在这里插入图片描述
可以看到,多层感知机输出层权重参数为
在这里插入图片描述
偏差参数为
在这里插入图片描述
我们可以看到,无论隐藏层有多少,都最后会等价与X*W,本质上还是一个线性的层。

原因:根源在于全连接层只是对数据做仿射变换(affine transformation),而多个仿射变换的叠加仍然是一个仿射变换。解决问题的一个方法是引入非线性变换,例如对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。
激活函数:本质是为了在神经网络中引入非线性层

常用的激活函数:
ReLU:
在这里插入图片描述
函数图像为:
在这里插入图片描述
Sigmoid函数:可以将函数变换到0,1之间
在这里插入图片描述
导数为:
在这里插入图片描述
函数图像为:
在这里插入图片描述
导数图像为:
在这里插入图片描述
双曲正切函数(tanh函数):将元素变换到-1到1之间
在这里插入图片描述
函数图像为:
在这里插入图片描述
Tanh函数的导数为:
在这里插入图片描述
图像为:
在这里插入图片描述
关于激活函数的选择:
①ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。
②用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。
③在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。
④在选择激活函数的时候可以先选用ReLu函数,如果效果不理想可以尝试其他激活函数。

### 关于支持向量机(SVM)在深度学习中的笔记和教程 #### 支持向量机简介 支持向量机(Support Vector Machine, SVM)是一种有监督的学习方法,在模式识别、分类以及回归分析方面有着广泛应用。作为一种强大的工具,SVM通过寻找最优超平面来实现数据集的有效划分[^1]。 #### 超平面的选择原则 对于给定的数据集,存在多种可能用于区分不同类别的超平面;然而,SVM特别之处在于它会选择那个能够使得最近的数据点到该平面的距离最大化的方案——即所谓的“最大间隔”。这种策略不仅有助于提高模型泛化能力,还能够在一定程度上防止过拟合现象的发生[^2]。 #### 核技巧的应用 当面对非线性可分的情况时,传统的线性SVM显然无法满足需求。此时引入了核函数的概念,允许我们将原始特征空间映射至更高维度的空间内,在那里原本复杂的边界条件可能会变得简单得多。常见的核函数包括多项式核、RBF径向基函数等,它们各自适用于不同类型的问题场景[^3]。 #### 实践案例展示 为了更好地理解如何利用Python库Scikit-Learn构建并训练一个简单的SVM分类器,请参阅如下代码片段: ```python from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC import matplotlib.pyplot as plt # 加载鸢尾花数据集 iris = datasets.load_iris() X = iris.data[:, [0, 2]] y = iris.target # 划分训练集与测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) scaler = StandardScaler().fit(X_train) X_train_std = scaler.transform(X_train) X_test_std = scaler.transform(X_test) svm_model = SVC(kernel='rbf', C=1.0, random_state=1) svm_model.fit(X_train_std, y_train) print('Test accuracy: %.3f' % svm_model.score(X_test_std, y_test)) ``` 此段程序展示了如何加载经典Iris数据集,并应用标准缩放处理后建立基于高斯核的支持向量机模型来进行多类别分类任务。最终输出的是模型在验证集上的预测精度得分[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值