ref: 深度学习基础介绍 机器学习19 神经网络NN算法

ref: 深度学习基础介绍 机器学习11 神经网络算法应用上

ref: 深度学习基础介绍 机器学习12 神经网络算法应用下

ref: 神经网络NN算法(应用篇)

1. 组成部分:输入层(input layer),隐藏层(hidden layer),输出层(output layer)

2. 每层由单元(units)组成(圆圈)

3. input layer 是由训练集的实例特征向量传入

4. 经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入

5. hidden layer 的个数是任意的,input layer 有一层,output layer 有一层

6. 每个 unit 也可以被称作神经结点,根据生物学来源定义

7. 以上为2层的神经网络(输入层不算)

8. 一层中加权的求和,然后根据非线性方程转化输出

9. 作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layers)和足够大的训练集,可以模拟任何方程


设计神经网络结构

1. 使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数

2. 特征向量在被传入输入层时通常被先标准化(normalize)到0和1之间(为了加速学习过程)

3. 离散型变量可以被编码成每一个输入单元对应一个特征值可能赋的值

比如:特征值A可能取三个值(a0, a1, a2),可以使用3个输入单元来代表A

  • 如果 A=a0,那么代表 a0 的单元值就取1,其他取0;
  • 如果 A=a1,那么代表 a1 的单元值就取1,其他取0,以此类推

4. 神经网络既可以用来做分类(classification)问题,也可以解决回归(regression)问题

  • 对于分类问题,如果是2类,可以用一个输出单元表示(0和1分别代表2类)
  • 如果多于2类,每一个类别用一个输出单元表示
  • 所以输出层的单元数量通常等于类别的数量
  • 没有明确的规则来设计最好有多少个隐藏层
  • 根据实验测试和误差,以及准确度来试验并改进

5. 交叉验证方法(Cross-Validation)

K-fold cross validation

上图分成3分

  • 第一次,后两个训练,第一个测试
  • 第二次,两边两个驯良,中间测试
  • 第三次,前两个训练,最后一个测试

6. Backpropagation 算法

6.1 通过迭代性的来处理训练集中的实例

6.2 对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间

6.3 反方向(从 输出层 => 隐藏层 => 输入层)来以最小化误差(error)来更新每个连接的权重(weight)

6.4 算法详细介绍

  • 输入:D:数据集,l 学习率(learning rate),一个多层向前神经网络
  • 输出:一个训练好的神经网络(a trained neural network)
  • 初始化权重(weights)和偏向(bias):随机初始化在 -1 到 1 之间,或者 -0.5 到 0.5 之间,每个单元有一个偏向对于每一个训练实例 X,执行以下步骤:

6.4.1 由输入层向前传送,计算后面 units 的值

通过下面公式实现:

  \[I_{j}=\sum_{i}\omega_{ij}O_{i}+\Theta_{j}\]

其中:

$i$ —— 对应前面的单元,$j$ 对应后面的单元

$\omega_{ij}$ —— 为权重

$O_{i}$ —— 为前一层的单元值

$\Theta_{j}$ —— 为偏向 bias

$I_{j}$ —— 为计算结果

  公式实现如下图所示:

  

  激活函数

  $$O_{j}=\frac{1}{1+e^{-I_{j}}}$$

Sigmoid 函数,激活函数

其中:

$O_{j}$ —— 为实际的计算值

6.4.2 根据误差(error)反向传送

1) 对于输出层:(求导实现的)

$$Err_{j}=O_{j}(1-O_{j})(T_{j}-O_{j})$$

其中:

$T_{j}$ —— 为真实值

2) 对于隐藏层:(求导实现的)

$$Err_{j}=O_{j}(1-O_{j})\sum_{k}Err_k\omega_{jk}$$

其中:

$Err_k$ —— 为前面一层,相当于后面一层的误差

$\omega_{jk}$ —— 为前面一层,相当于后面一层的权重

3) 权重更新:

$$\Delta\omega_{ij}=(l)Err_{j}O_{i}$$

$$\omega_{ij}=\omega_{ij}+\Delta\omega_{ij}$$

其中:

$l$ —— 为学习率,逐渐减小,比较优化

4) 偏向更新:

$$\Delta\Theta_{j}=(l)Err_{j}$$

$$\Theta_{j}=\Theta_{j}+\Delta\Theta_{j}$$

其中:

$i$ —— 对应前面的单元,$j$ 对应后面的单元

6.4.3 终止条件

  • 权重的更新低于某个阈值
  • 预测的错误率低于某个阈值
  • 达到预设一定的循环次数

7. 实例介绍

8. 代码实现 

# Import `Sequential` from `keras.models`
from keras.models import Sequential # Import `Dense` from `keras.layers`
from keras.layers import Dense # Initialize the model
model = Sequential() # Add input layer
# 输入层的 units 为 12
# 隐藏层的 units 为 64
# 激活函数为 relu
model.add(Dense(64, input_dim=12, activation='relu'))
# or
model.add(Dense(input_dim=12, units=64, activation='relu')) # second hidden layer
model.add(Dense(units=64, activation='relu' # Add output layer
# 输出层的 units 为 10
model.add(Dense(10))
# or
model.add(Dense(units=10, activation='softmax'))

ref: Keras Tutorial: Deep Learning in Python

ref: Getting started with the Keras Sequential model

ref: Keras HelloWorld

对于上面举例的 NN,可以通过下面代码构建结构

model.add(Dense(2, input_dim=3, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))

  configuration

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

  pick the best function

model.fit(x_train, y_train, batch_size=100, nb_epoch=20)
  • batch_size:随机分组(多少组)(mini-batch)
    batch size = 1, Stochastic gradient descent
  • nb_epoch:次数(重复的次数)

  How to use the neural network (testing):

# case 1
score = model.evaluate(x_test, y_test)
print('Total loss on Testing Set:', score[0])
print('Accuracy of Testing Set:', score[1]) # case 2
result = model.predict(x_test)

【446】Deep Learning的更多相关文章

  1. 【RS】Deep Learning based Recommender System: A Survey and New Perspectives - 基于深度学习的推荐系统:调查与新视角

    [论文标题]Deep Learning based Recommender System: A Survey and New Perspectives ( ACM Computing Surveys  ...

  2. 【转载】Deep Learning(深度学习)学习笔记整理

    http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...

  3. 【转】Deep Learning(深度学习)学习笔记整理系列之(八)

    十.总结与展望 1)Deep learning总结 深度学习是关于自动学习要建模的数据的潜在(隐含)分布的多层(复杂)表达的算法.换句话来说,深度学习算法自动的提取分类需要的低层次或者高层次特征. 高 ...

  4. 【转】Deep Learning(深度学习)学习笔记整理系列之(六)

    9.3.Restricted Boltzmann Machine (RBM)限制波尔兹曼机 假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所 ...

  5. 【转】Deep Learning(深度学习)学习笔记整理系列之(四)

    九.Deep Learning的常用模型或者方法 9.1.AutoEncoder自动编码器 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结 ...

  6. 【转】Deep Learning(深度学习)学习笔记整理系列之(三)

    好了,到了这一步,终于可以聊到Deep learning了.上面我们聊到为什么会有Deep learning(让机器自动学习良好的特征,而免去人工选取过程.还有参考人的分层视觉处理系统),我们得到一个 ...

  7. 【转】Deep Learning(深度学习)学习笔记整理系列之(二)

    因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点.所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放 ...

  8. 【转】Deep Learning(深度学习)学习笔记整理系列之(一)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-0 ...

  9. 【转】Deep Learning(深度学习)学习笔记整理系列之(七)

    9.5.Convolutional Neural Networks卷积神经网络 卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点.它的权值共享网络结构使之更类似于生物神经网 ...

随机推荐

  1. hash表的理解

    哈希表 先从数组说起 任何一个程序员,基本上对数组都不会陌生,这个最常用的数据结构,说到它的优点,最明显的就是两点: 简单易用,数组的简易操作甚至让大多数程序员依赖上了它,在资源富足的情况下,我们甚至 ...

  2. javascript数据结构与算法——列表

    前言: 1. 数据的存储结构顺序不重要,也不必对数据进行查找,列表就是一种很好的数据存储结构; 2.此列表采用仿原生数组的原型链上的方法来写,具体可以参考MDN数组介绍,并么有用prototype来构 ...

  3. CyclicBarrier 使用详解

    原文:https://www.jianshu.com/p/333fd8faa56e 1. CyclicBarrier 是什么? 从字面上的意思可以知道,这个类的中文意思是“循环栅栏”.大概的意思就是一 ...

  4. 使用laravel jwt-auth post提交数据一直出现 'error' => 'invalid_credentials'

    注意,laravel 对密码使用Hash加密,检查一下数据库user表中的password有没有Hash加密过 没仔细看文档坑死我了

  5. APT 信息收集——shodan.io ,fofa.so、 MX 及 邮件。mx记录查询。censys.io查询子域名。

    信息收集 目标是某特殊机构,外网结构简单,防护严密.经探测发现其多个子机构由一家网站建设公司建设. 对子域名进行挖掘,确定目标ip分布范围及主要出口ip. 很多网站主站的访问量会比较大.往往主站都是挂 ...

  6. python内置模块笔记(持续更新)

    常用函数name = '{wh}my \t name is {name},age is {age}.' print(name.capitalize()) # 字符串的开头字母大写 print(name ...

  7. Java学习 从0.1开始(一)

    写在前面: 之前从事过.NET,C,C++相关的开发,Java是一直没有学习的新领域.最近,应工作需要,开始学习Java相关的知识.又因为新公司并没有完整的系统架构,所以学习方向会侧重架构方向(Cod ...

  8. 学习Microsoft Visio(2)

    常用业务设计图示法 一.业务设计基础 1.名词概念 业务流程图:在公司.部门.岗位的层面上描述一个业务流程的宏观过程. 基本流程图:对某个处理过程的详细逻辑流程进行描述. 静态业务对象图(UML表示法 ...

  9. django-带参数路由

    路由urls.py from django.conf.urls import url from goods.views import IndexView, DetailView, ListView u ...

  10. intellij idea 搜索快捷键

    Ctrl+N按名字搜索类 1 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件 2 就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配 ...