神经网络NN算法

1. 背景:
1.1 以人脑中的神经网络为启发,历史上出现过很多不同版本
1.2 最著名的算法是1980年的 backpropagation 

2. 多层向前神经网络(Multilayer Feed-Forward Neural Network)
2.1 Backpropagation被使用在多层向前神经网络上
2.2 多层向前神经网络由以下部分组成:

           输入层(input layer), 隐藏层 (hidden layers), 输入层 (output layers)


2.3 每层由单元(units)组成
2.4 输入层(input layer)是由训练集的实例特征向量传入
2.5 经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入
2.6 隐藏层的个数可以是任意的,输入层有一层,输出层有一层
2.7 每个单元(unit)也可以被称作神经结点,根据生物学来源定义
2.8 以上成为2层的神经网络(输入层不算)
2.8 一层中加权的求和,然后根据非线性方程转化输出
2.9 作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layers) 和足够大的训练集, 可以模     
拟出任何方程

3. 设计神经网络结构
3.1 使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数
3.2 特征向量在被传入输入层时通常被先标准化(normalize)到0和1之间 (为了加速学习过程)
3.3 离散型变量可以被编码成每一个输入单元对应一个特征值可能赋的值
比如:特征值A可能取三个值(a0, a1, a2), 可以使用3个输入单元来代表A。
如果A=a0, 那么代表a0的单元值就取1, 其他取0;
如果A=a1, 那么代表a1de单元值就取1,其他取0,以此类推

3.4 神经网络即可以用来做分类(classification)问题,也可以解决回归(regression)问题
3.4.1 对于分类问题,如果是2类,可以用一个输出单元表示(0和1分别代表2类)
如果多余2类,每一个类别用一个输出单元表示
所以输入层的单元数量通常等于类别的数量

3.4.2 没有明确的规则来设计最好有多少个隐藏层
3.4.2.1 根据实验测试和误差,以及准确度来实验并改进
4. 交叉验证方法(Cross-Validation)
-fold cross valida
K-fold cross validation 

5. Backpropagation算法
5.1 通过迭代性的来处理训练集中的实例
5.2 对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间
5.3 反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接的权重(weight)
5.4 算法详细介绍
输入:D:数据集,l 学习率(learning rate), 一个多层前向神经网络
输入:一个训练好的神经网络(a trained neural network)

5.4.1 初始化权重(weights)和偏向(bias): 随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有          
一个偏向
5.4.2 对于每一个训练实例X,执行以下步骤:
5.4.2.1: 由输入层向前传送





5.4.2.2 根据误差(error)反向传送
对于输出层:
  对于隐藏层:
 
权重更新:
偏向更新
5.4.3 终止条件
5.4.3.1 权重的更新低于某个阈值
5.4.3.2 预测的错误率低于某个阈值
5.4.3.3 达到预设一定的循环次数
6. Backpropagation 算法举例

对于输出层:
对于隐藏层:
权重更新:
偏向更新:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python利用jieba(textRank、TFIDF)提取关键字

from jieba import analyse print("tfidf: ") tfidf analyse.extract_tags text "线程是程序执行时的最小单位,它是进程的一个执行流,\是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,\线程间共享进程…

神经网络算法实现

1. 关于非线性转化方程(non-linear transformation function) sigmoid函数(S 曲线)用来作为activation function:1.1 双曲函数(tanh)tanh是双曲函数中的一个,tanh()为双曲正切。在数学中,双曲正切“tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来公式…

神经网络算法的实例

1.简单非线性关系数据集测试(XOR)X: Y0 0 00 1 11 0 11 1 0Code:#!/usr/bin/env python #-*-coding:utf-8-*- #神经网络测试的例子 #简单非线性关系数据集测试(XOR)异或的运算 f…

线性回归模型

1. 简单线性回归模型举例: 汽车卖家做电视广告数量与卖出的汽车数量: 1.1 如何练出适合简单线性回归模型的最佳回归线/ 使sum of squares最小1.1.2 计算分子 (1-2)(14-20)(3-2)(24-20)(2-2)(18-20)(1-2)(17-20)(3-2)(27-20) 6 4 0 3 7 20分母 &…

多元线性回归模型

1. 与简单线性回归区别(simple linear regression)多个自变量(x)2. 多元回归模型yβ0+β1x1β2x2 ... βpxpε其中:β0,β1,β2... βp是参数ε是误差值3. 多元回归方程E(y)β0+β1x…

常见分数值归一化方法

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数…

非线性回归

1. 概率&#xff1a; 1.1 定义 概率(P)robability: 对一件事情发生的可能性的衡量1.2 范围 0 < P < 11.3 计算方法&#xff1a; 1.3.1 根据个人置信1.3.2 根据历史数据1.3.3 根据模拟数据1.4 条件概率&#xff1a;2. Logistic Regression (逻辑回归)2.1 例子2.2 基本…

python dir()函数使用

您可以使用内置的dir()函数列出一个定义对象的标识符。例如&#xff0c;对于一个模块&#xff0c;包括在模块中定义的函数&#xff0c;类和变量。 当你给dir()提供一个模块名字时&#xff0c;它返回在那个模块中定义的名字的列表。当没有为其提供参数时, 它返回当前模块中定义的…

【链接保存】十分钟上手sklearn:特征提取,常用模型,交叉验证

原博客地址&#xff1a;http://blackblog.tech/2018/02/05/%E5%8D%81%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8Bsklearn-1/ 简书地址&#xff1a;https://www.jianshu.com/p/731610dca805

【链接保存】十分钟上手sklearn:安装,获取数据,数据预处理

简书地址&#xff1a;https://www.jianshu.com/p/a9168803edc6 博主地址&#xff1a;http://blackblog.tech/2018/02/05/%E5%8D%81%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8Bsklearn-1/

层次聚类

假设有N个待聚类的样本&#xff0c;对于层次聚类来说&#xff0c;步骤&#xff1a;1、&#xff08;初始化&#xff09;把每个样本归为一类&#xff0c;计算每两个类之间的距离&#xff0c;也就是样本与样本之间的相似度&#xff1b;2、寻找各个类之间最近的两个类&#xff0c;把…

常用软件包和环境配置(机器学习)

1. 常用软件包&#xff1a;TheanoPylearn2scikit-neuralnetworkCaffeDeeplearning4jTorchhttp://deeplearning.net/software_links/2. 环境配置Linux: UbuntuEclipsePyDevPythonCUDAGPU: https://developer.nvidia.com/cuda-gpus3. 神经网络算法 (neural networks)http://www.m…

(优秀文章保存)Quartz优秀文章保存

Quartz的基本使用之入门&#xff08;2.3.0版本&#xff09; 一、Quartz可以用来做什么 Quartz是一个强大任务调度框架&#xff0c;我工作时候会在这些情况下使用到quartz框架&#xff0c;当然还有很多的应用场景&#xff0c;在这里只列举2个实际用到的 餐厅系统会在每周四晚…

【使用注意】Jsoup的select方法

之前做了一个频道抓取&#xff1a;获取div Elements div_e;div_e doc.select("div");Iterator<Element> div_it div_e.iterator();while (div_it.hasNext()) {处理逻辑} 我是想通过select div块然后去遍历获取div里的内容&#xff0c;但是发现有的新闻网址频…

cross-entropy函数

我们理想情况是让神经网络学习更快假设简单模型: 只有一个输入,一个神经元,一个输出简单模型: 输入为1时, 输出为0初始 w 0.6, b 0.9 初始预测的输出 a 0.82, 需要学习学习率: 0.15演示: 初始: w 2.0, b 2.0, 初始预测输出: 0.98, 和理想输出0差点很远演示:神经网络的学…

DButils工具使用笔记以及常见问题总结

入门&#xff1a; https://www.cnblogs.com/smyhvae/p/4085684.html 一、字段名称和实体类命名不用 解决办法&#xff1a;给查询结果的显示字段取别名&#xff0c;如TEMPLATE_ID AS templateId select news_id as id, title from test where id1 二、DBUtils使用BeanListH…

Tensorflow报错:AttributeError: 'module' object has no attribute 'scalar_summary'

报错&#xff1a; tf.scalar_summary(l.op.name (raw), l) AttributeError: module object has no attribute scalar_summary 解决&#xff1a; tf.scalar_summary(images, images)改为&#xff1a;tf.summary.scalar(images, images) tf.image_summary(images, images)改为&…

python安装Scrapy踩过的坑以及安装指导

在pyCharm中的setting中直接添加包然后报错,然后利用window控制台pip install 报错异常&#xff1a; Command "python setup.py egg_info" failed with error code 1 第一步&#xff1a;准备更新pip&#xff0c;利用以下指令 python -m pip install --upgrade pip…

MyBatis之快速入门

MyBatis之快速入门 2017/9/30首先我要明确告诉大家的是MyBatis是一个java持久层框架&#xff0c;以前我们都是用jdbc来将我们的java程序与数据库相连接&#xff0c;而MyBatis是对jdbc的一个封装。 1.MyBatis框架的引入 我们来看看传统的编程方式中使用jdbc的问题: 1.数据库连接…

【使用注意】特殊中括号[]的特殊json数组

Testpublic void demo93() throws Exception {String str "[\"a\", \"b\", \"c\"]";//生成json数组JSONArray createArray new JSONArray();createArray.put("a");createArray.put("b");createArray.put("…