Python深度学习
2024-09-24 10:09:15 2 举报
AI智能生成
Python深度学习总结
作者其他创作
大纲/内容
机器学习基础
机器学习四个分支
监督学习
简介
给定一组样本,它可以学会将输入数据映射到已知目标。
主要包括
分类
回归
分类和回归术语表
样本(sample)或输入(input)
进入模型的数据点
预测(prediction)或输出(output)
从模型出来的结果
目标(target)
真实值
预测误差(prediction error)或损失值(loss value)
模型预测与目标之间的距离
类别(class)
分类问题中供选择的一组标签
标签(label)
分类问题中类别标注的具体例子
真值(ground-truth)或标注(annotation)
数据集的所有目标
二分类(binary classification)
分类任务,每个输入样本都应被划分到两个互斥的类别中
多分类(multiclass classification)
每个输入样本都应被划分到两个
以上的类别中
多标签分类(multilabel classification)
每个输入样本都可以分配多
个标签
标量回归(scalar regression)
目标是连续标量值的任务(预测房价)
向量回归(vector regression)
目标是一组连续值(比如一个连续向量)的任务
小批量(mini-batch)或批量(batch)
模型同时处理的一小部分样本(样本数通常 为 8~128)样本数通常取 2 的幂
奇特变体
序列生成(sequence generation)
给定一张图像,预测描述图像的文字。
序列生成有时可以重新表示为一系列分类问题,比如反复预测序列中的单词或标记。
语法树预测(syntax tree prediction)
给定一个句子,预测其分解生成的语法书
目标检测(object detection)
给定一张图像,在途中特定目标的周围画一个边界框。
这个问题也可以表示为分类问题(给定多个候选边界框,对每个框内的目标进行分类)或分类与回归联合问题(用向量回归来预测边界框坐标)。
图像分割(image segmentation)
给定一张图像,在特定物体上画一个像素级的掩模(mask)
无监督学习
简介
在没有目标的情况下寻找输入数据的有趣变换,其目的在于数据可视化、数据压缩、数据去噪或更好理解数据相关性
无监督学习是数据分析的必备技能,在解决监督学习问题之前,更好地了解数据集
常见算法
降维(dimensionality reduction)
聚类(clustering)
自监督学习
简介
自监督学习没有人工标注的监督学习。
标签从输入数据中生成,通常是启发式算法生成
常见算法
自编码器(autoencoder)
例子
给定视频中过去的帧来预测下一帧
给定文本中前面的词来预测下一个词
强化学习
简介
在强化学习中,智能体(agent)接收有关其环境的信息,并学会选择使某种奖励最大化的行动
例子
神经网络会“观察”视频游戏的屏幕并输出游戏操作
模型评估
数据计划分
训练集
验证集
评估模型
测试集
机器学习目的
得到可泛化(generalize)的模型
超参数(hyperparameter)
层数
每层大小
三种经典评估方法
简单留出验证
分支主题
K折验证(K-fold validation)
分支主题
带有打乱数据的重复K折验证((iterated K-fold validation with shuffling))
问题
这种方法一共要训练和评估 P×K 个模型(P 是重复次数),计算代价很大
评估模型的注意事项
数据代表性(data representativeness)
在将数据划分为训练集和测试集 之前,通常应该随机打乱数据
时间箭头(the arrow of time)
始终确保测试集 中所有数据的时间都晚于训练集数据
数据冗余(redundancy in your data)
一 定要确保训练集和验证集之间没有交集
数据预处理、特征工程、特征学习
数据预处理
目的
使原始数据更适用于神经网络处理,包括向量化、标准化、处理缺失值和特征提取。
处理方法
向量化
神经网络所有输入和目标都必须是浮点数张量(特定情况是整数张量)
无论处理什么数据(音频、图像还是文本),都必须首先将其转换为张量
值标准化
输入数据的特征
取值较小
大部分值都应该在0~1范围内
同质性(homogenous)
所有特征的取值都应该在大致相同的范围内
标准化方法
将每个特征分别标准化,使其平均值为0。
将每个特征分别标准化,使其标准差为1。
处理缺失值
一般来说,对于神经网络,将缺失值设置为0是安全的,只要0不是一个有意义的值。
如果测试数据中可能有缺失值,而网络是在没有缺失值的数据上训练的,那么网络不可能会学会忽略缺失值,这种情况下应认为生成一些有缺失项的训练样本,多次复制一些训练样本,然后删除测试数据中可能缺失的某些特征。
特征工程(feature engineering)
介绍
简介
将数据输入模型之前,利用关于数据和算法的知识对数据进行硬编码的变换,以改善模型的效果。
呈现给模型的数据应该便于模型进行学习。
数据和特征决定了机器学习的上限
举例
良好特征的优点
用更少的资源更优雅地解决问题
例:使用卷积神经网络来 读取图片时钟面上的时间是非常可笑的
用更少的数据解决问题
如果只有很少的样本,那么特征的信息价值就变得非常重要
核心
特征使用方案
要实现目标需要哪些数据?
基于业务理解,尽可能找出因变量有影响的所有自变量
可用性评估
获取难度
覆盖率
准确率
特征获取方案
如何获取特征?
如何存储?
特征处理
特征清洗
清洗异常样本
采样
数据不均衡
样本权重
预处理
单个特征
归一化
离散化
Dummy Coding
缺失值
数据变换
log
指数
Box-Cox
多个特征
降维
PCA
LDA
特征选择
Filter
思路
自变量和目标变量之间的关系
相关系数
卡方检验
信息增益、互信息
Wrapper
思路
通过目标函数(AUC/MES)来决定是否加入一个变量
迭代:产生特征子集,评价
完全搜索
启发式搜索
随机搜索
GA
SA
Embedded
思路:学习器自身自动选择特征
正则化
L1
Lasso
L2
Ridge
决策树
熵、信息增益
深度学习
衍生变量
对原始数据加工,生成有商业意义的变量
特征监控
特征有效性分析
特征重要性、权重
特征监控
监控重要特征
防止特征质量下降,影响模型效果
过拟合与欠拟合
分支主题
优化与泛化
优化是指调节模型以在训练数据上得到最佳性能
泛化是指训练好的模型在前所未见的数据上的性能好坏
欠拟合(underfit)
模型还有改进的空间,网络还没有对训练数据中所有相关模式建模
解决方法
获得更多的训练数据
过拟合(overfit)
解决方法
正则化
减小网络大小
获取更多训练数据
添加权重正则化
简介
强制让模型权重只能取较小的值, 从而限制模型的复杂度,这使得权重值的分布更加规则(regular)
目的
简单模 型比复杂模型更不容易过拟合
方法
向网络损失函数中添加与较大权重值相关的成本(cost)
两种形式
L1正则化(L1 regularization)
添加的成本与权重系数的绝对值[权重的 L1 范数(norm)] 成正比
L2正则化(L2 regularization)也叫权重衰减(weight decay)
添加的成本与权重系数的平方(权重的 L2 范数)成正比
Keras 中不同的权重正则化
dropout 正则化
简介
对某一层使用 dropout,就是在训练过程中随机将该层的一些输出特征舍 弃(设置为 0)
dropout 比率(dropout rate)是被设为 0 的特征所占的比例,通常在 0.2~0.5 范围内
测试时没有单元被舍弃,而该层的输出值需要按 dropout 比率缩小,因为这时比训练时 有更多的单元被激活,需要加以平衡
总结
深度学习模型通常都很擅长拟合训练数据,但真正的挑战在于泛化,而不是拟合
网络的容量越大,它拟合训练数据(即得到很小的训练损失)的速度就越快,但也更容易过拟合
机器学习通用工作流程
定义问题,收集数据集
定义所面对的问题
输入数据是什么?
要预测什么?
面对的是什么类型的问题?
二分类?
多分类?
标量回归?
向量回归问题?
多分类,多标签问题?
模型架构
损失函数
非平稳问题(nonstationary problem)
选择衡量成功的指标
精度?
准确率?
召回率?
客户保留率?
衡量成功的指标指引你选择损失函数
模型要优化什么
应该直接与你的目标(业务成功)保持一致
确定评估方法
准备数据
开发比基准更好的模型
最后一层的激活
它对网络输出进行有效的限制
损失函数
优化配置
使用哪种优化器?
学习率是多少?
大多数情况下,使用 rmsprop 及其 默认的学习率是稳妥的
扩大模型规模:开发过拟合的模型
搞清楚需要多大的模型
必须开发一个过拟合模型
添加更多的层
让每一层变得更大
训练更多的轮次
始终监控训练损失和验证损失,以及关心的指标的训练值和验证值
开始正则化和调节模型
模型正则化与调节超参数
添加 dropout
尝试不同的架构:增加或减少层数
添加 L1 和 / 或 L2 正则化
尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置
(可选)反复做特征工程:添加新特征或删除没有信息量的特征
深度学习用于文本和序列
处理文本数据
处理方式
单词和字符one-hot编码
词嵌入(word embedding)
获取方式
对比
ne-hot 编码或 one-hot 散列得到的词表示是稀疏的、高维的、硬编码的
词嵌入是密集的、相对低维的,而且是从数据中学习得到的
循环神经网络
LSTM
GRU
高级用法
循环dropout
在循环层中使用dropout来降低过拟合
堆叠循环层
提高网络的表达能力
双向循环层
将相同的信息以不同的方式呈现给循环网络,提高精度并缓解遗忘问题
处理序列
深度学习应用于计算机视觉
卷积神经网络简介
卷积运算
性质
平移不变性(translation invariant)
卷积神经网络再图像右下角到某个模式后,可在任何地方识别这个模式
使得在处理图像时可高效利用数据
用更少的训练样本得到更泛化的能力
模式的空间层次结构(spatial hierarchies of pattern)
密集连接层和卷积连接的区别
密集连接层从输入特征中学到的是全局模式
卷积层学到的是局部模型
单个图像数据特征
(height, width, channels)
两个关键参数定义
从输入中提取的图块尺寸
大小通常是3x3或5x5
输出特征图的深度
卷机所计算的过滤器的数量
工作原理
1. 在3D特征图上滑动3x3或5x5窗口,并提取周围特征
2. 3D图块与学到的同一个权重矩阵(卷积核(convolution kernel)做张量积,转换成(output_depth)的1D向量。
3. 向量空间重组,转换为(height,width,output_depth)特征图
边界效应与填充
分支主题
卷积层中,通过padding设置填充
valid
不适用填充
same
输出的宽度和高度与输入相同
步幅
分支主题
采用步幅的情况很少,而是通过最大池化
注意点
1. 输出的宽度和高度可能与输入的宽度和高度不同
边界效应,可以通过对输入特征图进行填充抵消
使用了步幅(stride)
最大池化运算
作用
对特征图进行下采样,与卷积类似
从输入特征图中提取窗口,并输出每个通道的最大值
为什么不删除最大池化层
这种架构不利于学习特征的空间层级结构
元素个数太多,容易导致过拟合
为什么使用下采用
减少需要处理的特征图的元素个数
通过让连续卷积层观察窗口越来越大,从而引入空间过滤的层级结构
下采样方法
最大池化
平均池化
特征中编码了某种模式或概念在不同位置是否存在
而观察不同的特征最大值而不是平均值能够给出更多的信息
步幅
小型数据训练卷积网络
数据增强
ImageDataGenerator
rotation_range (图像随机旋转的角度范围)
width_shift、height_shift (图像在水平或垂直方向上平移的范围)
shear_range(随机错切变换的角度)
zoom_range (图像随机缩放的范围)
horizontal_flip (随机将一半图像水平翻转)
fill_mode (填充新创建像素的方法)
使用预训练的卷积神经网络
简介
一个保存好的网络
已在大型数据集(通常是大规模图 像分类任务)上训练好
种类
VGG
ResNet
Inception
Inception-ResNet
Xception
使用方法
特征提取(feature extraction)
简介
1. 使用之前网络学到的表示来从新样本中提取有趣的特征。
2. 将这些特征输入一个新的分类器,从头开始训练
卷积基
卷积基学到的表示可能更加通用,因此更适合重复使用
注
卷积层的通用性取决于在模型中的深度
靠近底部层提取的是局部的、高度通用的特征图
靠近顶部的层提取的是更加抽象的概念
微调模型(fine-tuning)
简介
1. 用 于特征提取的冻结的模型基,微调是指将其顶部的几层“解冻”
2. 将这解冻的几层和新增加的部分联合训练
步骤
1. 在已经训练好的基网络(base network)上添加自定义网络
2. 冻结基网络
3.训练所添加部分
4. 解冻基网络的一些层。
5. 联合训练解冻这些层和添加的部分。
卷积神经网络的可视化
常用三种方法
可视化卷积神经网络中间输出(中间激活)
1. 有助于理解卷积神经网络连续层如何对输入进行变换
2. 有助于初步了解卷积神经网络每个过滤器含义
可视化卷积神经网络的过滤器
有助于精确理解卷积神经网络中每个过滤器容易接受的视觉模式或视觉概念
可视化图像中类激活的热力图
有助于理解图像的哪个部分被识别为属于某个类别,从而可定位图像中的物体
什么深度学习
人工智能、机器学习与深度学习
人工智能
努力将通常由人类完成的智力任务自动化
机器学习
机器学习系统是训练出来的,而不是明确地用程序编写出来的
三要素
输入数据点
预期输出的示例
衡量算法效果好坏的方法
机器学习和深度学习的核心问题在于有意义地变换数据
深度学习
例子
用于数字分类的深度神经网络
工作原理
权重(weights)
损失函数(loss function)
反向传播(backpropagation)
已经取得的进展
接近人类水平的图像分类
接近人类水平的语音识别
接近人类水平的手写文字转录
更好的机器翻译
更好的文本到语音转换
数字助理,比如谷歌即时(Google Now)和亚马逊Alexa
接近人类水平的自动驾驶
更好的广告定向投放
更好的网络搜索结果
能够回答用自然语言提出的问题
机器学习简史
概率建模(probabilistic modeling)
简介
概率建模是统计学原理在数据分析中的应用
代表算法
朴素贝叶斯
它假设输入数据的特征都是独 立的
logistic回归(logistic regression)
是一种分类算法,而不是回 归算法
早期神经网络
早在 20 世纪 50 年代就将神经网络作为玩具项目,并对其核心思想 进行研究
贝尔实验室于 1989 年第一次成功实现了神经网络的实践应用,将卷积 神经网络的早期思想与反向传播算法相结合,并将其应用于手写数字分类问题
核方法(kernel method)
核方法是一组分类算法
核技巧(kernel trick)
基本思想
要想在新的表示空间中找到良好的决策超平面,不需要在新空间中直接计算 点的坐标,只需要在新空间中计算点对之间的距离
支持向量机 (SVM,support vector machine)
简介
SVM的目标是通过在属于两个不同类别的两组数据之间找到良好决策边界(decision boundary)来解决分类问题。
决策边界
分支主题
寻找决策边界步骤
1. 将数据映射到一个新的高维表示,这时集邮册便捷可以用一个超平面来表示
2. 尽量让超平面与每个类别最近的数据点之间的距离最大化,从而计算出良好决策边界(分 割超平面),这一步叫作间隔最大化(maximizing the margin)。
问题
SVM很难扩展到大型数据集
在图像分类等感知问题上的效果也不好
决策树、随机森林与梯度提升机
决策树
决策树(decision tree)是类似于流程图的结构,可以对输入数据点进行分类或根据给定输 入来预测输出值。决策树的可视化和解释都很简单。
随机森林
首先构建许多决策树,然后将它们的输出集成在一起。
梯度提升机
通过迭代地训练新模型来专门解决 之前模型的弱点,从而改进任何机器学习模型的效果。
深度学习
深度 学习的变革性在于,模型可以在同一时间共同学习所有表示层,而不是依次连续学习(这被称 为贪婪学习)
学习过程中两个基本特征
1. 通过渐进的、逐层的方式形成越来越复杂的表示
2. 对中间这些渐进的表示共同进行学习
推动机器学习进步的三种技术
硬件
数据集和基准
算法上的改进
神经网络数学基础
初识神经网络
类和标签
分类问题中的某个类别叫作类(class)。数据点叫作样本(sample)。某 个样本对应的类叫作标签(label)
编译(compile)参数
损失函数(loss function)
网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进。
优化器(optimizer)
基于训练数据和损失函数来更新网络的机制
训练和测试过程中需要监控的指标(metric)
神经网络数据表示
张量(tensor)
简介
它是一个数据容器
张量的维度(dimension)通常叫作轴(axis)
标量(0D张量)
简介
仅包含一个数字的张量叫做标量(scalar,也叫标量张量、零维张量、0D张量)
向量(1D张量)
简介
数字组成的数组叫做向量(vector)或一维张量(1D张量)。
一维张量只有一个轴。
这个向量有 5 个元素,所以被称为 5D 向量,5D 向量只 有一个轴,沿着轴有 5 个维度,而 5D 张量有 5 个轴
矩阵(2D张量)
简介
向量组成的数组叫做矩阵(matrix)或二维张量(2D张量),第一个轴上的元素叫作行(row),第二个轴上的元素叫作列(column)
3D张量与更高维张量
将多个矩阵组合成一个新的数组,可以得到一个 3D 张量
深度学习处理的一般 是 0D 到 4D 的张量,但处理视频数据时可能会遇到 5D 张量
关键属性
张量三个关键属性
轴的个数(阶)
形状
数据类型
数据批量的概念
简介
深度学习中所有数据张量的第一个轴(0 轴,因为索引从 0 开始)都是样本轴 3 (samples axis,有时也叫样本维度)
现实世界中的数据张量
向量数据
2D张量,形状为(sample,feature)
人口统计数据集,每个人的年龄、邮编和收入
可以存储在形状为 (100000, 3) 的 2D
张量中
文本文档数据集,每个文档表示为每个单词在其中出现的次数
可以存储在形状为 (500, 20000) 的张量
时间序列数据或序列数据
3D张量,形状为(samples, timesteps, features)
股票价格数据集
每一分钟,我们将股票的当前价格、前一分钟的最高价格和前一分钟 的最低价格保存下来
每分钟被编码为一个 3D 向量,整个交易日被编码为一个形 状为 (390, 3) 的 2D 张量(一个交易日有 390 分钟)
250 天的数据则可以保存在一
个形状为 (250, 390, 3) 的 3D 张量中
推文数据集
每条推文编码为 280 个字符组成的序列,而每个字符又来自于 128 个字符组成的字母表
每个字符可以被编码为大小为 128 的二进制向量 (只有在该字符对应的索引位置取值为 1,其他元素都为 0)
每条推文可以被编码 为一个形状为 (280, 128) 的 2D 张量
包含 100 万条推文的数据集则可以存储在一
个形状为 (1000000, 280, 128) 的张量中
图像
4D张量,形状为(samples, height, width, channels) 或 (samples, channels,height, width)
图像通常具有三个维度:高度、宽度和颜色深度
128 张灰度图像组成的批 量可以保存在一个形状为 (128, 256, 256, 1) 的张量中
可以保存在一个形状为 (128, 256, 256, 3) 的张量中
TensorFlow 机器学习框架将 颜色深度轴放在最后
视频
5D 张量,形状为 (samples, frames, height, width, channels) 或(samples,frames, channels, height, width)
视频可以看作一系列帧, 6 每一帧都是一张彩色图像
每一帧都可以保存在一个形状为 (height, width, color_ depth) 的 3D 张量中
一系列帧可以保存在一个形状为 (frames, height, width, color_depth) 的 4D 张量中
不同视频组成的批量则可以保存在一个 5D 张量中,其形状为 (samples, frames, height, width, color_depth)
张量运算
广播(broadcast))
步骤
向较小的张量添加轴(叫作广播轴),使其ndim与较大的张量相同
将较小的张量沿着新轴重复,使其形状与较大的张量相同
张量点积(tensor product)
两个向量之间的点积是一个标量,而且只有元素个数相同的向量之间才能做点积
dot(x, y) 不等于 dot(y, x)
对于两个矩阵 x 和 y,当且仅当 x.shape[1] == y.shape[0] 时,才可以对它们做点积dot(x, y)。得到一个形状为 (x.shape[0], y.shape[1]) 的矩阵,其元素为 x 3 的行与 y 的列之间的点积
张量变形(tensor reshaping)
张量变形是指改变张量的行和列,以得到想要的形状.
变形后的张量的元素总个数与初始 张量相同。
张量运算的几何解释
对于张量运算所操作的张量,其元素可以被解释为某种几何空间内点的坐标,因此所有的张量运算都有几何解释
仿射变换、旋转、缩放等基本的几何操作都可以表示为张量运算
深度学习的几何解释
神经网络完全由一系列张量运算组成
这些张量运算都只是输入数据的几何 变换
因此,可以将神经网络解释为高维空间中非常复杂的几何变换,这种变换可以通过许 多简单的步骤来实现
基于梯度的优化
概览
神经层数据变换( output = relu(dot(W, input) + b ))
W和b都是张量
成为该层的权重(weight)或可训练参数(trainable parameter),分别对应kernel和bias
神经网络训练步骤
1.随机初始化(random initialzation)权重
2. 循环训练
1. 抽取训练样本x和对应目标y组成的数据批量
2. 在 x 上运行网络[这一步叫作前向传播(forward pass)],得到预测值 y_pred
3. 计算网络在这批数据上的损失,用于衡量y_pred和y之间的距离
4. 更新网络的所有权重,使网络在这批数据上的损失略微下降
更新权重
利用网络中所有运算都 是可微(differentiable)的这一事实,计算损失相对于网络系数的梯度(gradient),然后向梯度 的反方向改变系数,从而使损失降低。
导数(derivative)
定义
当函数y=f(x)的自变量x在一点x0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f'(x0)或df(x0)/dx。
举例
斜率 a 被称为 f 在 p 点的导数(derivative)
如果 a 是负的,说明 x 在 p 点附近的微小变 7 化将导致 f(x) 减小(如图 2-10 所示);
如果 a 是正的,那么 x 的微小变化将导致 f(x) 增大。 此外,a 的绝对值(导数大小)表示增大或减小的速度快慢。
张量运算的导数:梯度
随机梯度下降
小批量随机梯度下降(mini-batch stochastic gradient descent,又称为小批量 SGD
简介
随机(stochastic)是指每批数据都是随机抽取的(stochastic 是 random 在科学上的同义词
step因子选取合适的值很重要
如果取值太小,则沿着 曲线的下降需要很多次迭代,而且可能会陷入局部极小点
如果取值太大,则更新权重值之后 可能会出现在曲线上完全随机的位置
极端SGD
真 SGD
每次迭代时只抽取一个样本和目标,而不是抽取一批 数据
批量SGD
每一次迭代都在所有数据上 运行
在低纬度表示中形成的直觉在实践中不一定总是准确的
SGD变体
种类
带动量的SGD
Adagrad
RMSProp
区别
计算下一次权重更新时还要考虑上一次权重更新, 而不是仅仅考虑当前梯度值
动量
解决SGD两个问题
收敛速度
局部极小点
灵感来源于物理学
实现过程
物理
每一步都移动小球,不仅要考虑当 前的斜率值(当前的加速度),还要考虑当前的速度(来自于之前的加速度)
神经网络
更新参数 w 不仅要考虑当前的梯度值,还要考虑上一次的参数更新
反向传播算法
链式求导
链式法则(chain rule):(f(g(x)))' = f'(g(x)) * g'(x)。
将链式法则应用于神经网络梯度值的计算,得 到的算法叫作反向传播(backpropagation)
神经网络入门
二分类问题
训练步骤
准备数据
张量转换方法
填充列表
one-hot编码
构建网络
Dense层堆叠问题
网络有多少层
每层有多少个隐藏单元
激活函数
作用
为了获得更丰富的假设空间
多层线性点积运算仍是线性运算
常用种类
sigmoid
relu
损失函数
二元交叉熵(binary_ crossentropy)
对于二分类问题
均方误差(mean_ squared_error)
对于二分类问题
交叉熵(crossentropy)
对于输出概率值得模型
用于衡量概率分布之间的距离
优化器
训练模型
compile编译
fit训练
返回history对象
val_acc
acc
val_loss
loss
验证方法
留出验证集
新数据预测结果
predict方法进行预测
小结
通常需要对原始数据进行大量预处理,以便将其转换为张量输入到神经网络中
对于二分类问题(两个输出类别),网络的最后一层应该是只有一个单元并使用 sigmoid
激活的 Dense 层,网络输出应该是 0~1 范围内的标量,表示概率值
对于二分类问题的 sigmoid 标量输出,应该使用 binary_crossentropy 损失函数
无论你的问题是什么,rmsprop 优化器通常都是足够好的选择
随着神经网络在训练数据上的表现越来越好,模型最终会过拟合,并在前所未见的数据上得到越来越差的结果。一定要一直监控模型在训练集之外的数据上的性能
多分类问题
编码数据
将标签向量化方法
将标签列表转换为整张张量
使用one-hot编码
小结
如果要对 N 个类别的数据点进行分类,网络的最后一层应该是大小为 N 的 Dense 层
对于单标签、多分类问题,网络的最后一层应该使用 softmax 激活,这样可以输出在 N个输出类别上的概率分布
多分类问题的损失函数几乎总是应该使用分类交叉熵。它将网络输出的概率分布与目标的
真实分布之间的距离最小化。
处理多分类问题的标签有两种方法
通过分类编码(也叫 one-hot 编码)对标签进行编码,然后使用categorical_ crossentropy 作为损失函数
将标签编码为整数,然后使用 sparse_categorical_crossentropy 损失函数
将数据划分到许多类别中时,应该避免使用太小的中间层,以免在网络中造成信息瓶颈
回归问题
简介
logistic 回归不是回归算法, 而是分类算法
网络最后一层只有一个单元,没有激活函数,是一个线性层,这是标量回归。
损失函数
均方误差(MSE,mean squared error)
回归问题常用的损失函数
K 折验证
简介
将可用数据划分为 K 个分区(K 通常取 4 或 5),实例化 K 个相同的模型,将每个模型在 K-1 个分区上训练,并在剩 下的一个分区上进行评估
小结
回归问题使用的损失函数与分类问题不同。回归常用的损失函数是军方误差(MSE)
回归问题使用的评估指标也与分类问题不同。精度的概念不适用于回归问题。常见的回归指标是平均绝对误差(MAE)
如果输入数据的特征具有不同的取值范围,应该先进行预处理,对每个特征单独进行
缩放
如果可用的数据很少,使用 K 折验证可以可靠地评估模型
如果可用的训练数据很少,最好使用隐藏层较少(通常只有一到两个)的小型网络,以避免严重的过拟合
0 条评论
下一页