Git Product home page Git Product logo

blog's Introduction

Hello everyone, I am a computer major student from Jinan University. Welcome to my github! My research interests include streaming speech translation, speech synthesis, and keyword spotting.

My email is [email protected]. Welcome everyone to communicate with me about research issues such as intelligent speech.

blog's People

Contributors

coding-sharks avatar

Stargazers

 avatar  avatar

Watchers

 avatar

blog's Issues

深度学习笔记deep learning note

正则化

对于不同的权重参数,我们更偏向于选择各个特征权重均衡的参数。
我们假设一组W1 = [4,0,0,0] W2 = [1,1,1,1]
即使使用W1权重的结果符合预期,但由于其泛化能力几乎为0,不可工程化,其应用能力十分狭窄。正则化则是为了避免W1的情况,也就是过拟合。

  • 我们将其各个特征权重参数的平方和作为评判指标,则上述W1的惩罚项为16,W2的则为4,因此!对于W1的惩罚值应该偏大一些。

PS.对于每一层神经网络,我们无法知道其到底做什么,所以将其视作黑盒!

模型训练后权重参数忽大忽小的原因

数据集不好,存在多个离群点、异常点。(建模比赛中经常会在数据集中加入异常点来增大难度)

  • 解决方法1:人工审核一遍,去除部分异常点。(算法层面较难分辨出离群点)
  • 解决方法2:增大batch-size,以防止模型过拟合
  • 解决方法3:通过聚类算法DBSCN,筛选出-1的点,即离群点

损失函数

损失函数 = 数据损失 + 正则化惩罚项

  • 数据损失:预测数值和真实值之间的差异
  • 正则化惩罚项:权重均衡的W其惩罚较小,越不均衡的W其惩罚越大!
    (我们总是希望模型不要太复杂,过拟合的模型是毫无用处的)

Relu函数(激活函数)(非线性函数,用的更多!)

max(0,x)去除负值

PS.有针对Relu改造的函数:不直接抹去(设置为0),而是给定一点点负值,改进方法很多

Sigmoid函数(激活函数)(线性函数)

对于分类任务,经过模型预测后,我们可以得到一个得分值。
但是!和得分值相比,得到样本在每一个类别的概率是不是更好呢?!这就是sigmoid函数所做的事

  • 然而sigmoid函数中存在梯度消失现象,即无法更新权重参数!也正是这个现象,导致了神经网络早期的不盛行。

Softmax分类器

Ps....利用log函数,因为log函数,当x = 1 时,y = 0,即当概率为1的时候,其损失为0,也就是完美。

  • 归一化
    1.exp:对于得分值通过exp(e的几次幂函数)来放大起得分之间的差异性。
    2.normalize:将得分值全部转换成0-1的概率

  • 计算损失值
    L = -log(P)
    log函数0-1是负的,故加个符号,根据log函数可以知道,损失值最小为0,上不峰顶。

Epoch、BN

Epoch = n : 完成了n次前向计算 + 反向传播的过程
BN = batch normalizatio:每一层都要进行一次BN,让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

前向传播 + 反向传播

  • 前向传播:计算损失值
    得出损失值后,如何更新参数呢?那就是反向传播(梯度下降)的事了!
  • 反向传播 :梯度下降,即朝着损失函数减小的方向走!(沿着梯度的反方向走)
  • 对于局部最优解的问题:由于权重参数众多,就算有部分参数是局部最优解(下山的时候遇到平台了,扩大搜索范围),也可以忽略不计,没法证明是最优,这是一个相对问题!

Ps.Y = WX + b b是针对输出进行微调,有几个输出,就有几个微调项(b)

数据预处理(防过拟合)

origin data经过“去均值:X-X.mean” 得到 zero centered data
再经过normalization:即除以其各自维度的标准差,即可得到最终的normalized data

参数初始化

一般采用随机策略初始化参数(除非有预训练模型,即他已经有了经验了,就用他的那个参数就好)
不能初始化太大的参数,不然过拟合了!所以初始化的参数一定要很小!

Drop out

  • 随机杀死神经元,将特征杀死,防止过拟合!PS...2000人上课,为了整体的效率,开除1000人

RNN循环神经网络

RNN的重要特点:在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的。
RNN不能主动输出永远循环,输出需要手动利用h进行计算!

  • RNN的局限:长期依赖问题

  • 即当时间间隔一定长时,RNN便会失去学习能力。即其预测准确率下降。
    因为RNN无法避免的会受到短时记忆的影响,即他会忽略间隔长的记忆,RNN会存在梯度消失的问题!
    !!!RNN只具有短时记忆!

  • 梯度消失
    停止学习,参数不再变化

  • 梯度爆炸
    计算参数的难度越来越复杂

LSTM长短期记忆网络(特殊的RNN)

和RNN不同的一点是,LSTM的每一步的参数是不同的!

  • 三类门结构:遗忘门、输入门、输出门

  • 类比语言模型的例子,当我看到一个主语后,我就把之前的主语给忘了,也就是说记忆力有限,但我只记重要的

  • 基本LSTM分步动图预览
    (红色表示sigmoid(0,1),蓝色表示tanh(-1,1)C表示细胞状态,h表示之前一步的状态,x表示输入信息)
    33d34e6909bd9e989fbf7094d97890c4

cc4a872a1f878a945c6afd912a6e2ff5

3c9d64c8ac82b985769cb0903891dabe

fc0d3305d75e0bb3b77602ffc524843e
个人理解(里面名词并不专业,主要是为了便于理解过程):sigmoid:遗忘/记住

1.(x+h)经过红色 = 遗忘A
2. 遗忘A * Ct-1 = 遗忘相应信息的细胞状态 算作C - A1
3.(x+h)经过蓝色 = 信息(含A的但不仅仅只有A)
4. 信息(含A的但不仅仅只有A) * 记住A = A2
5. A2 + (C - A1) = Ct(更新了A的细胞状态)
6. Ct 经过蓝色 * (x+h)经过红色 = 选择细胞状态的部分去作为输出:ht
7. 输出的是h不是C,h是从C来的,由红色选择输出内容
8. 遗忘、输入、输出都由sigmoid控制!(经过同样的红色,结果也不一样,因为权重变了)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.