pytorch_05_神经网络
神经网络
一些神经元的输出会变成另外一些神经元的输入,一般以层来组织,最常见的是全连接神经网络,其中两个相邻层中每一个层的所有神经元与另一个层的所有神经元相连,每个层内部的神经元不相连。
一般的,N层神经网络并不会把输入层算进去,因此一个一层的神经网络是指没有隐藏层,只有输入层和输出层的神经网络。Logistic回归就是一个一层的神经网络。
输出层一般没有激活函数,因为输出层通常表示一个类别的得分或者回归的一个实值的目标,所以输出层可以是任意的实数。
在数据不太复杂时,容量较小的模型反而有着更好的效果,但是,很难衡量到到底多小的模型才算是小的模型,其次小的模型在使用如梯度下降法等训练的时候通常更难。因为神经网络的损失函数一般是非凸的,容量小的网络更容易陷入局部极小点而达不到最优的效果,同时,这些局部最小点的方差特别大。换句话说,也就是每个局部最优点的差异都特别大,所以在训练网络的时候训练10次可能得到的结果有很大的差异。但是对于容量更大的神经网络,它的局部极小点的方差特别小,也就是说训练多次虽然可能陷入不同的局部极小点,但是他们的差异很小,这样训练就不会完全依靠随机初始化。
反向传播算法
是一个有效的求解梯度的算法,本质其实就是一个链式求导法则的应用。链式法则:如果需要对其中的元素求导,那么可以一层一层求导,然后将结果乘起来,这就是链式法则的核心,也是反向传播算法的核心。
直观上看反向传播算法是一个优雅的局部过程,每次求导只是对当前的运算求导,求解每层网络的参数都是通过链式法则将前面的结果求出不断迭代到这一层的,所以说这是一个传播过程。
sigmoid函数举例:



梯度下降的变式
1.SGD
2.Momentum:随机梯度下降的同时,增加动量,动量的计算基于前面梯度,参数更新不仅仅基于当前的梯度,也基于之前的梯度。
3.Adagrad:自适应学习率的方法。学习率不断变小,且受每次计算出来的梯度影响,对于梯度比较大的参数,它的学习率就会变得相对更小。
处理数据和训练模型的技巧
数据预处理
1.中心化:每个特征维度都减去相应的均值实现中心化,这样可以使数据变成0均值。
2.标准化:数据不同的特征维度都有着相同的规模。一种是除以标准差,这样可以使新数据的分布接近标准高斯分布,另外一种是每个特征维度的最大值和最小值按比例缩放到-1到1之间。
3.PCA
4.白噪声:首先跟pca一样将数据投影到一个特征空间,然后每个维度除以特征值来标准化这些数据,直观上就是一个多元高斯分布转换到了一个0均值,协方差矩阵伪1的多元高斯分布。白噪声会增强数据中的噪声,因为其增强了数据中的所有维度,包括了一些方差很小的不相关的维度。
防止过拟合方法
1.正则化:

2,Dropout
pytorch_05_神经网络的更多相关文章
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- 神经网络、logistic回归等分类算法简单实现
最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里 ...
- 马里奥AI实现方式探索 ——神经网络+增强学习
[TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...
- 卷积神经网络提取特征并用于SVM
模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取 ...
- 如何用卷积神经网络CNN识别手写数字集?
前几天用CNN识别手写数字集,后来看到kaggle上有一个比赛是识别手写数字集的,已经进行了一年多了,目前有1179个有效提交,最高的是100%,我做了一下,用keras做的,一开始用最简单的MLP, ...
- 用Tensorflow让神经网络自动创造音乐
#————————————————————————本文禁止转载,禁止用于各类讲座及ppt中,违者必究————————————————————————# 前几天看到一个有意思的分享,大意是讲如何用Ten ...
- 一文弄懂神经网络中的反向传播法——BackPropagation
最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...
- BP神经网络原理及python实现
[废话外传]:终于要讲神经网络了,这个让我踏进机器学习大门,让我读研,改变我人生命运的四个字!话说那么一天,我在乱点百度,看到了这样的内容: 看到这么高大上,这么牛逼的定义,怎么能不让我这个技术宅男心 ...
- [Machine Learning & Algorithm] 神经网络基础
目前,深度学习(Deep Learning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网.人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革.要学习深度学习,那么首先要熟悉神经网络(N ...
随机推荐
- netCore3.0+webapi到前端vue(前端)
前篇已经完成后端配置并获取到api连接 https://www.cnblogs.com/ouyangkai/p/11504279.html 前端项目用的是VS code编译器完成 vue 第一步 引入 ...
- Asp.Net SignalR 使用记录
工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于Asp.Net SignalR 的demo 这里 ...
- python3.0安装django2.0、xadmin
1.操作环境 Windows10.python3.8 2.安装django2.0 pip install django==2.0 x 1 pip install django==2.0 3.安装相 ...
- Flask补充--threading.local对象
目录 Local 局部变量 全局变量 使用threading.local() 自定义threading.local 函数版 面向对象版 通过setattr和getattr实现 每个对象有自己的存储空间 ...
- wsl下安装并运行Kafka
0.引言 kafka是一个高性能分布式的MQ,今天我们就来玩玩 1.安装 wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kaf ...
- c# Hashtable Synchronized vs SyncRoot
Synchronized vs SyncRoot 我们知道,在.net的一些集合类型中,譬如Hashtable和ArrayList,都有Synchronized静态方法和SyncRoot实例方法,他们 ...
- Java有参构造方法和成员方法
Java面向对象基础就包括有参构造方法和成员方法 无参构造声明方式为 class Teacher{ //无参构造方法,一般用在初始化变量 public Teacher(){ } } 有参构造声明为 c ...
- SQL Server学习内容(一)
SQL Server SQL Server对大小写不敏感,每条语句末端使用分号. 1.SQL命令 SELECT 从数据中提取数据 UPDATE 更新数据中的数据 DELETE 从数据库中删除数据 IN ...
- Vue+ElementUI 导航组件
创建导航页组件 在components目录下新建一个navigation目录,在Navi目录中新建一个名为Navi.vue的组件.至此我们的目录应该是如下图所示: 然后我们修改main.js文件,修改 ...
- Transformer---GPT模型
一.GPT(Generative Pre-Training) GPT-2的模型非常巨大,它其实是Transformer的Decoder.GPT-2是Transformer的Decoder部分,输入一个 ...