深入浅出Pytorch--深度学习概览

60 篇文章 3 订阅
26 篇文章 0 订阅

1. 2015年,ILSVRCC比赛中,ResNet错误率首次降到5%以下,战胜了人类。

2. 机器学习中数据的类型

图片
文本
音频
数据
RGB / RGBA
字符串
通用格式:16bit 振幅44.1kHz采样频率

图片
1. 包含了很多像素点,一个像素一个字节,值为0~255
2. 图像处理中,处理不同图片大小,resize可以用最近邻插值双线性插值法
3. 处理流程图如下:

图片
数据增强
单张图片的归一化
数据集尺度的归一化
  • HSV: Hue(色相),Saturation(饱和度),V(Brightness Value)明度。Jittering就是在这三个值上做5~10%随机增减再返回RGB。
数据增强
随机剪裁Random Cropping
色彩Jittering
回归尺寸

文本:

文本
分词 Tokenization
去停词 Stop Words
正则化
词嵌入Embedding
  1. 分词: 连续文本根据标点空格分成单词列表。
  2. 停词: 去掉出现频率大,没有啥意义的单词,比如吧,哦,了,it, of ,the …
  3. 正则化:文本统一化,英文–>中文
  4. 词嵌入n个单词,每个单词对应m长的向量 n × m n \times m n×m矩阵。经验:m 约等于n的四次方根的1到10倍,然后转化成最近的2次幂。

3. 可以认为机器学习就是得到一种概率分布(联合分布 or 条件分布) P θ ( X , Y ) P_\theta\bold(X,Y) Pθ(X,Y) or P θ ( Y ∣ X ) P_\theta\bold(Y|X) Pθ(YX)

条件概率分布,也就是给定X数据集,得到你认为他们的标签们的概率分布。
联合概率分布,就是说 我得到的是 数据集和标签 粘连在一起,都可以看做属性的情况下的概率分布。

P ( X , Y ) = ∫ P ( Y ∣ X ) P ( X , Y ) d X P(\bold X,\bold Y) = \int P(\bold Y|\bold X) P\bold (\bold X,\bold Y)\mathrm{d}\bold X P(X,Y)=P(YX)P(X,Y)dX

4. 生成式模型(Generative Model)和判别式模型(Discriminative Model)

生成式模
判别式模型
机器学习模型
朴素贝叶斯, 隐马尔可夫, HMM
逻辑回归,条件随机场

生成式模型: 联合概率分布
判别式模型: 条件概率分布

5. 判别式模型虽然一般比生成式模型效果好,但是不能通过模型任意产生新的数据。

必备常识

  1. 可以得到的信息多—> 熵就低。 因为,可以得到信息,那么就越有一定的规则,有序,即熵低。反之,无序,无新信息可获取,熵高。比如,分子运动高度无序,熵高。 一切事物趋于无序,趋于熵增。

  2. 概率密度分布相对集中, 即(可提供给我们的信息)多, 信息熵就小。 因为,如果概率密度集中,等同于我们知道一个点概率,我们就可以知道别的点很可能也出现。

  3. 一些定义和证明
    H ( X ) = − ∫ P ( X ) log ⁡ P ( X ) d X H(\bold X) = - \int \bold P(\bold X)\log\bold P(\bold X)\mathrm{d}\bold X H(X)=P(X)logP(X)dX
    H ( X , Y ) = − ∫ P ( X , Y ) log ⁡ P ( X , Y ) d X d Y H(\bold X,\bold Y) = - \int \bold P(\bold X,\bold Y)\log\bold P(\bold X,\bold Y)\mathrm{d}\bold X \mathrm{d}\bold Y H(X,Y)=P(X,Y)logP(X,Y)dXdY
    H ( Y ∣ X ) = − ∫ P ( X , Y ) log ⁡ P ( Y ∣ X ) d X H(\bold Y|\bold X) = - \int \bold P(\bold X,\bold Y)\log\bold P(\bold Y|\bold X)\mathrm{d}\bold X H(YX)=P(X,Y)logP(YX)dX
    因此,
    H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H(\bold Y|\bold X) =H(\bold X,\bold Y) - H(\bold X) H(YX)=H(X,Y)H(X)
    可以看到条件熵,能获得的信息更多。对我们更有益。

6.训练集,验证集, 测试集 划分

机器学习中可以考虑: 0.7, 0.2, 0.1
深度学习中可以考虑: 0.9 0.05, 0.05

7.避免过拟合

  1. 正则化(L1—> 拉普拉斯先验分布 |L2–>高斯先验分布)
  2. Early Stopping早停法
  3. Dropout 神经元
    总之从 1.数据集本身,2.正则,3.换模型复杂度上入手。

8. 激活函数

激活函数就是为了引入非线性!
三种常用
σ ′ = σ ( x ) ( 1 − σ ( x ) ) \sigma' = \sigma(x)(1-\sigma(x)) σ=σ(x)(1σ(x))
t a n h ′ ( x ) = 1 − t a n h 2 ( x ) tanh'(x) = 1 - tanh^2(x) tanh(x)=1tanh2(x)

ReLu 取值(0,+inf) 导数 :(0, 1)
Sigmoid 取值(0,1) 导数(0, 0.25)
Tanh 取值(-1,1) 导数(0, 1)

回归任务: 线性输出任何值, 损失函数为MSE
分类任务: 线性输出后,加入非线性比如softmax层,再输出结果标签。 损失函数是Cross Entropy损失函数

softmax:
输入指数函数后,指数归一化,就是对应的概率了。

p i = e x i ∑ k = 1 N e x k p_i = \frac{e^{x_i}}{\sum_{k=1}^{N}e^{x_k}} pi=k=1Nexkexi
思考:
如果有个 e x k e^{x_k} exk很大,大到超出了浮点数范围,
因此一般会这样:
p i = e x i − x m a x ∑ k = 1 N e x k − x m a x p_i = \frac{e^{x_i - x_{max}}}{\sum_{k=1}^{N}e^{x_k-x_{max}}} pi=k=1Nexkxmaxexixmax
x m a x = m a x ( x 1 , x 2 , . . . , x N ) x_{max} = max(x_1, x_2, ..., x_N) xmax=max(x1,x2,...,xN)

思考softmax只有两类的时候就是sigmoid


9. 梯度消失和梯度爆炸

  • 一开始权重过大, σ ′ ∗ w > 1 \sigma'*w >1 σw>1,导致爆炸
  • 一开始权重过小反向传播后, 最前面几层,梯度消失。(sigmoid , tanh)

10.SGD, Momentum, AdaGrad, Rmsprop, Adam

  • SGD : 批次随机梯度下降

  • Momentum: w t + 1 = w t − m t \bold w_{t+1} = \bold w_t - \bold m_t wt+1=wtmt
    m t = γ . m t − 1 + α d L d w t \bold m_t = \gamma.\bold m_{t-1} + \alpha\frac{dL}{d \bold w_t} mt=γ.mt1+αdwtdL

  • AdaGrad: 类似于NLMS, 记忆梯度平方
    G t = ∑ i = 1 t ( d L d w i ) 2 \bold{G_t }= \sum_{i=1}^{t}(\frac{dL}{d\bold w_i})^2 Gt=i=1t(dwidL)2
    w t + 1 = w t − α d L d w t G t + ϵ \bold w_{t+1} = \bold w_t - \frac{\alpha \frac{dL}{d\bold w_t}}{\sqrt{\bold G_{\bold t}+\epsilon}} wt+1=wtGt+ϵ αdwtdL

  • RMSprop: 不用全部记忆,用移动指数平均。
    v t v_t vt代替AdaGrad中的 G t G_t Gt
    v t = γ v t − 1 + ( 1 − γ ) ( d L d w i ) 2 \bold{v_t} = \gamma \bold{v_{t-1}}+(1-\gamma)(\frac{dL}{d\bold w_i})^2 vt=γvt1+(1γ)(dwidL)2
    w t + 1 = w t − α d L d w t v t + ϵ \bold w_{t+1} = \bold w_t - \frac{\alpha \frac{dL}{d\bold w_t}}{\sqrt{\bold v_{\bold t}+\epsilon}} wt+1=wtvt+ϵ αdwtdL

  • Adam:结合动量和速度

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PyTorch是一个基于Torch的Python开源机器学习库,它是深度学习领域中的一种框架。与TensorFlow和Keras等框架相比,PyTorch由Facebook公司开发并于2016年发布的相对较新,不过其在学术界中得到了广泛的认可。PyTorch可以使用GPU或CPU进行运算,其支持动态定义神经网络,这意味着它的架构可以随用户的需求而变化。使用PyTorch进行深度学习可以帮助人们加快模型的开发和调试过程。PyTorch支持多种网络模型,包括卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)等,并提供了许多强大的工具来简化深度学习的开发工作流程。同时PyTorch也提供了简单的接口,使得用户能够更容易地进行训练和部署。总之,PyTorch是一个非常优秀的深度学习框架,它提供了强大的工具和简单易用的接口,使得深度学习算法开发变得更加容易和灵活。无论是初学者还是专业人士,都可以使用PyTorch实现各种复杂的深度学习任务,达到更好的效果。 ### 回答2: Pytorch深度学习中文版是一种开源机器学习框架,它由Facebook AI Research开发并维护。Pytorch提供了广泛的API,用于各种深度学习应用,包括计算机视觉、自然语言处理、语音识别等。 Pytorch的设计理念是易于使用、易于调试和易于扩展。这个框架提供了一个动态的计算图,可以很容易地调试和优化模型。此外,它还支持动态计算图和静态计算图,可以选择更适合特定任务的计算图类型。 Pytorch基于Python编写,因此用户可以使用Python的全部功能,包括numpy、scipy和matplotlib等。此外,它还支持高阶抽象,可以在模型中容易地使用新的算法和技术。 对于初学者来说,Pytorch提供了丰富的社区和学习资源。可以在官方文档和GitHub上找到大量的示例代码和教程。因此,学习和使用Pytorch非常容易和愉快。 总之,Pytorch深度学习中文版是一个灵活、易于使用和强大的机器学习框架,可以帮助用户快速地搭建和优化深度学习模型。它在学术界和工业界都得到了广泛的应用,并被认为是当前最好的深度学习框架之一。 ### 回答3: PyTorch是一个开源的Python机器学习库,最初由Facebook在2017年发布。该库主要用于深度学习任务,包括计算机视觉,自然语言处理和推荐系统。PyTorch的运行速度较快,易于使用,并具有很强的灵活性,使得它成为研究人员和工程师的首选工具。 PyTorch的深度学习框架包含丰富的可重复使用的模块和层,便于构建神经网络,也支持开发自定义模块和层。它还提供了自动微分机制,使深度学习开发者能够快速、高效地构建和调试模型。 在PyTorch中,数据集可以通过DataLoader加载,并在训练时使用。同样,计算图可以通过使用Torchscript进行序列化,这使得PyTorch能够在生产环境中具有较好的性能。此外,PyTorch支持Torchvision、Torchtext和Torchaudio等子模块,它们可用于各种深度学习任务中的图像、文本和音频处理。 总体而言,PyTorch已成为工业界和学术界中深度学习方案的主要选择之一。通过其非常直观和可扩展的API,开发者可以快速构建和有效调试各种深度学习模型。同时,以PyTorch为核心的社区也不断壮大,为用户提供更丰富的资源和支持,使其更加易于学习和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万物琴弦光锥之外

给个0.1,恭喜老板发财

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值