| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 第二周作业:多层感知机 -> 正文阅读 |
|
[人工智能]第二周作业:多层感知机 |
本周学习内容:线性回归 和 Softmax 回归;多层感知机、欠拟合和过拟合、Dropout、数值稳定性等。目录 一、线性回归回归:为一个或多个自变量与因变量之间关系建模的方法。回归常用来表示输入输出之间的关系。 线性回归基于几个简单的假设:首先,假设自变量x和因变量y之间的关系是线性的,即y可以表示为x中元素的加权和,这里通常允许包含观测值的一些噪声;其次,我们假设任何噪声都比较正常,如噪声遵循正态分布。 线性模型可以看作单层神经网络 损失函数:衡量预估质量,能够量化目标的实际值与预测值之间的差距。通常我们会选择非负数作为损失,且数值越小表示损失越小,完美预测时的损失为0。回归问题中最常用的损失函数是平方误差函数。当样本i的预测值为(i),其相应的真实标签为y(i)时,平方误差可以定义为: 常数不会带来本质的差别,但这样在形式上稍微简单一些,表现为当我们对损失函数求导后常数系数为1. 显式解(解析解): 像线性回归这样的简单问题存在解析解,但并不是所有的问题都存在解析解。解析解可以进行很好的数学分析,但解析解的限制很严格,导致它无法应用在深度学习里。 总结: 1.线性回归是对N维输入的加权,外加偏差 2.使用平方损失来衡量预测值和真实值的差异 3.线性回归有显式解 4.线性回归可以看作是单层神经网络 注:iterator:迭代器 二、基础优化方法1.小批量随机梯度下降 梯度下降:通过不断地在损失函数递减的方向上更新参数来降低误差。 梯度下降最简单的用法是计算损失函数(数据集中所有样本的损失均值)关于模型参数的导数(在这里也可以称为梯度)。但实际中的执行可能很慢:因为在每一次更新参数之前,必须遍历整个数据集。因此,通常会在每次需要计算更新的时候随机抽取一小批样本,这种变体叫做小批量随机梯度下降。 在每次迭代中,随机抽样一个小批量B,由固定数量的训练样本组成。然后,我们计算小批量的平均损失关于模型参数的导数(也可以称为梯度)。最后,我们将梯度乘以一个预先确定的正数η,并从当前参数的值中减掉。 下面的数学公式表示这一更新过程(?表示偏导数): 总结一下,算法的步骤如下:(1)初始化模型参数的值,如随机初始化;(2)从数据集中随机抽取小批量样本且在负梯度的方向上更新参数,并不断迭代这一步骤。 |B|表示每个小批量中的样本数,称为批量大小。η为学习率。批量大小和学习率的值通常是手动预先指定,而不是通过模型训练得到的。这些可以调整但不在训练过程中更新的参数称为超参数。调参是选择超参数的过程。超参数通常是我们根据训练迭代结果来调整的,而训练迭代结果是在独立的验证数据集上评估得到的。 总结: 三、softmax回归回归估计一个连续值,而分类预测一个离散类别。? 与线性回归一样,softmax回归也是一个单层神经网络。由于计算每个输出取决于所有输入,所以softmax回归的输出层也是全连接层。 对于给定数据样本的特征x,输出是由权重与输入特征进行矩阵-向量乘法再加上偏置b得到的。 采取的主要方法是将模型的输出视作为概率。优化参数以最大化观测数据的概率。为了得到预测结果,设置一个阈值,如选择具有最大概率的标签。 模型的输出可以视为属于类 j 的概率。然后我们可以选择具有最大输出值的类别作为预测。 要将输出视为概率,必须保证在任何数据上的输出都是非负的且总和为1。此外,需要一个训练目标,来鼓励模型精准地估计概率。在分类器输出0.5的所有样本中,这些样本需要有一半实际上属于预测的类。 这个属性称为校准。 为了将未归一化的预测变换为非负并且总和为1,同时要求模型保持可导。首先对每个未归一化的预测求幂,可确保输出非负。为了确保最终输出的总和为1,再对每个求幂后的结果除以它们的总和。如下式: 因此,可以视为一个正确的概率分布。softmax运算不会改变未归一化的预测o之间的顺序,只会确定分配给每个类别的概率。因此,在预测过程中,仍可以用下式来选择最有可能的类别。 softmax是一个非线性函数,但softmax回归的输出仍然由输入特征的仿射变换决定。因此,softmax回归是一个线性模型。 softmax运算: 损失函数:损失函数来度量预测概率的效果。将依赖最大似然估计,这与在为线性回归中的均方误差目标提供概率证明时遇到的概念完全相同。 对数似然:将向量视为给定任意输入x的每个类的估计条件概率。假设整个数据集{X,Y}具有n个样本,其中索引i的样本由特征向量x(i)和独热标签向量y(i)组成。可以将估计值与实际值进行比较: ? ?根据最大似然估计,最大化P(Y∣X),相当于最小化负对数似然: ? ?其中,对任何标签y和模型预测,损失函数为: ? ?上式中的损失函数通常被称为交叉熵损失。? 总结: 四、多层感知机感知机:感知机是一个二分类模型。 求解算法:分类错了以后对w,b进行更新,直到左右分类正确,等价于使用批量大小为1的梯度下降。 只能产生线性分割面,因此不能拟合XOR函数,导致了AI的第一次寒冬。 隐藏层:隐藏层大小是超参数,可以设置。 单隐藏层: Q:为什么需要非线性激活函数? A: 如果不加激活函数,还是一个简单的线性模型,而非多层结构。 激活函数的选择: Sigmoid激活函数: Tanh激活函数: ReLU激活函数:rectified linear unit 多层感知机在输出层和输入层之间增加一个或多个全连接的隐藏层,并通过激活函数转换隐藏层的输出。 常用的激活函数包括ReLU函数、sigmoid函数和tanh函数。 多类分类:softmax+隐藏层=多层感知机 区别:k,对output做一个softmax。 还可以做多个隐藏层: ? 激活函数避免层数的塌陷,最后一层输出不需要激活函数。第一层一般可以扩一点,一般不会先压缩后扩张,会损失信息。 总结: 1. 多层感知机使用隐藏层和激活函数来得到非线性模型; 2. 常用激活函数是sigmoid,tanh,ReLU; 3. 使用Softmax来处理多类分类; 4. 超参数为隐藏层数,和各个隐藏层大小。 五、模型选择、欠拟合和过拟合训练误差 vs 泛化误差:模型在训练数据上的误差 vs 模型在新数据的误差 验证数据集 vs 测试数据集:用来评估模型好坏(注意不要和训练数据混在一起) vs 只用一次 K折交叉验证:当训练数据稀缺时,可能无法提供足够的数据来构成一个合适的验证集。原始训练数据被分成K个不重叠的子集。然后执行K次模型训练和验证,每次在K?1个子集上进行训练,并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。最后,通过对K次实验的结果取平均来估计训练和验证误差。 欠拟合or过拟合: 几个倾向于影响模型泛化的因素:
总结:
六、权重衰减权重衰减是常见的处理过拟合的方法。 控制模型范围的两种:1 模型的参数少,2 每个参数选择值的范围小。权重衰减是后者。 ?
七、 Dropout丢弃法一个好的模型需要对输入数据的扰动鲁棒 ?在输入数据中加入噪音等价于正则,而丢弃法在层之间加入噪音。通常作用在隐藏全连接层的输出上。 ? 丢弃法将一些输出项随机置0来控制模型复杂度,丢弃概率是控制模型复杂度的超参数。 正则项只在训练中使用,因为推理时权重不需要发生变化,训练时才需要。 ?八、数值稳定性和模型初始化
?九、kaggle房价预测代码有报错,还在找原因,跑通后再更新。 感想:这周比上周更加找到学习的状态,能够静下心来学习,但知识量较多,还需要反复加深记忆。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 14:52:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |