当前位置: 首页 > news >正文

【研1深度学习】《神经网络和深度学习》阅读笔记(记录中......

9.27

  1. 语义鸿沟: 是指输入数据的底层特征和高层语义信息之间的不一致性和查一下。如果可以有一个好的表示在某种程度上能够反映出数据的高层语义特征,那么我们就能相对容易的构建后续的机器学习模型。
  2. 嵌入(Embedding): 将一个度量空间中的一些对象映射到另一个低维的度量空间中,并尽可能地保持不同对象之间的拓扑关系。
  3. 端到端的训练: 在学习过程中不进行分模块或分阶段的训练,直接优化任务的总体目标。
  4. 梯度消失问题阻碍神经网络的进一步发展,特别是循环神经网络。为了解决这个问题,研究人员采用两步来训练一个多层的循环神经网络:第一步为通过无监督学习的方式来逐层训练每一步循环神经网络,即预测下一个输入;第二部通过反向传播算法进行精调。
  5. 过拟合问题往往是由于训练数据少和噪声以及模型能力强等原因造成的。为了解决过拟合问题,一般在经验风险最小化的基础上再引入参数的正则化来限制模型能力,使其不要过渡地最小化经验风险。这种就是结构风险最小化
  6. 超参数: 用来定义模型结构或优化策略的参数。
  7. 最简单、常用的优化算法为梯度下降,首先初始化参数,然后按照下面迭代公式来计算风险函数的最小值:
    θ t + 1 = θ t − α ∂ R D ( θ ) ∂ θ \theta _{t+1}=\theta _t-\alpha \frac{\partial R_D(\theta )}{\partial \theta } θt+1=θtαθRD(θ),其中 α \alpha α为搜索步长,一般称为学习率。
  8. Early Stop: 每次迭代时,把新的到的模型在验证集上进行测试,计算错误率。如果在验证集上的错误率不再下降,就停止迭代。
  9. 目标函数是整个训练集上风险函数,这种方式称为批量梯度下降法(Batch Gradient Descent,BGD)。批量梯度下降法在每次迭代时需要计算每个样本上损失函数的梯度并求和。当训练集中的样本数量N 很大时,空间复杂度比较高,每次迭代的计算开销也很大。
  10. 为了减少每次迭代的计算复杂度,我们也可以在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数,即随机梯度下降法(Stochastic Gradient Descent,SGD)
  11. 偏差指的是算法的期望预测与真实预测之间的偏差程度, 反应了模型本身的拟合能力。
  12. 方差度量了同等大小的训练集的变动导致学习性能的变化, 刻画了数据扰动所导致的影响。

9.28

线性模型激活函数损失函数优化方法
线性回归 ( y − ω T x ) 2 (y-\omega ^Tx)^2 (yωTx)2最小二乘、梯度下降
逻辑回归 σ ( ω T x ) \sigma (\omega ^Tx) σ(ωTx) y l o g σ ( ω T x ) ylog\sigma (\omega ^Tx) ylogσ(ωTx)梯度下降
Softmax回归 s o f t m a x ( W T x ) softmax(W^Tx) softmax(WTx) y l o g s o f t m a x ( W T x ) ylogsoftmax(W^Tx) ylogsoftmax(WTx)梯度下降
感知器 s g n ( ω T x ) sgn(\omega^Tx) sgn(ωTx) m a x ( 0 , − y ω T x ) max(0,-y\omega^Tx) max(0,yωTx)随机梯度下降
支持向量机 s g n ( ω T x ) sgn(\omega^Tx) sgn(ωTx) m a x ( 0 , 1 − y ω T x ) max(0,1-y\omega^Tx) max(0,1yωTx)二次规划、SMO等
  1. 学习率和批量大小的理解
  • 在机器学习中,特别是涉及到使用梯度下降算法进行模型训练时,学习率通常被比喻成步长或者步幅。这个比喻是基于梯度下降的基本原理:通过调整参数来最小化损失函数。在每次迭代中,参数的更新量是由梯度(损失函数关于参数的变化率)与学习率的乘积决定的。因此,如果把参数空间想象成一个山丘,那么学习率就是你每一步下山时迈的步子大小。

  • 如果学习率设置得太大,就像迈出了很大的步伐,可能会越过最低点,导致无法收敛或收敛速度慢。相反,如果学习率太小,则像每次只迈出一小步,虽然更有可能找到局部最小值,但是达到最小值的速度会非常慢,使得训练过程耗时过长。

  • 至于批量大小(batch size),它影响的是我们计算梯度的方式。批量大小是指每次更新参数时所使用的样本数量。较小的批量大小(如随机梯度下降SGD)会导致估计的梯度有较高的方差,这可能会使下降路径更加不稳定,但有时也有助于跳出局部最小值。较大的批量大小则会产生更稳定但可能更保守的梯度估计,这有助于更平滑的收敛路径,但也可能导致陷入鞍点或局部最小值。

总结来说,学习率可以类比为你下山的步伐大小,而批量大小则是决定你是在每次只观察少数几个脚印(小批量),还是等待更多人走过之后再决定下一步的方向(大批量)。

  1. 反向传播的简单理解

反向传播是为了有效地计算出损失函数相对于网络中所有权重的梯度,并据此调整权重,以期最小化损失函数。之所以选择损失进行反向传播,是因为损失直接反映了模型预测的质量,通过减少损失,可以间接地提高模型的预测能力。

  1. 线性回归从零实现时的训练过程
  • 初始化参数
    * 重复以下训练,直到完成
    * 计算梯度
    * 更新参数
lr = 0.03
num_epochs = 3
net = linreg
loss = squared_lossfor epoch in range(num_epochs):for X, y in data_iter(batch_size, features, labels):l = loss(net(X, w, b), y)  # X和y的小批量损失# 因为l形状是(batch_size,1),而不是一个标量。l中的所有元素被加到一起,# 并以此计算关于[w,b]的梯度# 只是对所有损失求和(l.sum()),然后调用 .backward() 来计算这个总和损失关于模型参数的梯度。l.sum().backward() # 计算模型参数的梯度sgd([w, b], lr, batch_size)  # 使用参数的梯度更新参数with torch.no_grad():train_l = loss(net(features, w, b), labels)print(f'epoch {epoch + 1}, loss {float(train_l.mean()):f}')

9.29

《神经网络和深度学习》的第四章前馈神经网络
《动手学习深度学习》的第四章多层感知机的实现

http://www.lryc.cn/news/452638.html

相关文章:

  • 十一不停歇-学习ROS2第一天 (10.2 10:45)
  • Java高效编程(14):考虑实现 `Comparable
  • 华为昇腾CANN训练营2024第二季--Ascend C算子开发能力认证(中级)题目和经验分享
  • 实战OpenCV之形态学操作
  • 矩阵的特征值和特征向量
  • (11)MATLAB莱斯(Rician)衰落信道仿真2
  • ComfyUI局部重绘换衣讲解
  • Android——添加联系人
  • 高级 Java Redis 客户端 有哪些?
  • jenkins项目发布基础
  • 前缀和算法详解
  • Android-Handle消息传递和线程通信
  • 【Kubernetes】常见面试题汇总(四十七)
  • grafana全家桶-loki promtail收集k8s容器日志
  • HTML5+CSS+JavaScript剪子石头布游戏
  • Flask-3
  • Redis的基本使用
  • [241004] Linux 系统中配置文件的区别 | VirtualBox 7.1.2 发布,修复多项问题并提升性能
  • hbuilderx+uniapp+Android宠物用品商城领养服务系统的设计与实现 微信小程序沙箱支付
  • SVN 迁移到 GIT,并保留提交记录
  • 【数据结构与算法】LeetCode:堆和快排
  • 文档大师:打造一站式 Word 报告解决方案
  • Python 数字专题:全方位解析整数
  • IP协议报文
  • 【分布式微服务云原生】掌握分布式缓存:Redis与Memcached的深入解析与实战指南
  • 计算机毕业设计 基于Python的智能文献管理系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • 如何查看NVIDIA Container Toolkit是否配置成功
  • python全栈学习记录(二十一)类的继承、派生、组合
  • Go语言实现长连接并发框架 - 任务执行流
  • Flutter与原生代码通信