八、神经网络

一、为啥要有神经网络?

在前面的几篇博客中,很容易知道我们处理的都是线性的数据,例如:线性回归和逻辑回归,都是线性的算法
但是,实际上日常生活中所遇到的数据或者问题绝大多数还是非线性的
一般面对非线性数据,我们可以采用多项式回归进行处理,详细内容可以参考博文:五、线性回归和多项式回归实现
说白了就是改变横纵坐标,是得数据线性化。例如:工资和年龄呈抛物线关系,但是工资和年龄的平方则呈线性关系,此时就可以将年龄的平方作为变量进行线性处理。

神经网络是非线性的算法!!!
为啥捏?
在这里插入图片描述
举个栗子:
当你传入x1,x2,x3三个数据时,对应三个权重参数,代入求和,即得到Σ,这一步是线性的,得到z
关键点来了!!!f为激活函数,这个函数很关键,因为它不是线性函数!!!
常用的激活函数有很多,这里假设使用的激活函数为sigmoid函数,将求和的值代入sigmoid函数中得y,由于激活函数是非线性的,z是线性的,代入得到的最终的结果y肯定是非线性的!!!
故称神经网络是非线性的算法。

神经网络是非线性的算法可以解决实际生活中的非线性数据所带来的一系列问题,故有需求才会有存在。

想当年Google的alphago大战李世石,就是用的神经网络。程序员搬了14台服务器组成一个集群,前三局alphago赢了,但是第四局的时候输了,这时候程序员喊暂停,说要调整参数,调整参数,这么多权重你知道调啥?神经网络里面的隐藏层都是黑盒子,闹呢?实际上他们应该是初始化参数,用一开始的模型参数,alphago为啥第四局会输?主要是学习过拟合了。alphago一边和李世石下棋一边会去学习,重新更新权重参数。此时程序员初始化模型,后几局alphago取得胜利。

二、常见的激活函数

1,Sigmoid激活函数

在这里插入图片描述
在这里插入图片描述

2,Tanh / 双曲正切激活函数

在这里插入图片描述
在这里插入图片描述

3,ReLU 激活函数

在这里插入图片描述
在这里插入图片描述

4,ELU激活函数

在这里插入图片描述在这里插入图片描述

5,PReLU(Parametric ReLU)激活函数

在这里插入图片描述
在这里插入图片描述

6,Softmax激活函数

在这里插入图片描述

在这里插入图片描述

四、隐藏层的含义

大年初一,你去上别人家房顶感叹人生,最后房顶塌了,伤到人了,你看你老妈会不会打你就完事了
大年初一,你去上自家房顶摘菜帮老妈做家务,你再看看你会不会挨打

大年初二,你闲着没事玩火,还口嗨,我饮酒点孤灯,最后造成火灾伤到其他人了,你看你老妈会不会打你就完事了
大年初二,你玩火去帮老妈做饭,你再看看你会不会挨打

大年初三,你又闲了,拿起家里面的菜刀跑出去,来寻找你的青春,最后脑子抽筋伤到人了,你觉得你妈会不会揍你
大年初三,你动刀帮老妈做饭,再看看你会不会挨打
在这里插入图片描述
这里的隐藏层的作用就起到了推理演绎的作用,让机器更加容易的进行判断。
隐藏层越多,模型的推理演绎越多,也就是模型想的越多,预测结果也就会越准。

五、神经网络相关概念

机器学习–拟人

有监督的机器学习:
多元线性回归===回归/预测
逻辑回归===分类

神经网络(仿生)===预测
神经网络是非线性的算法,非线性的算法可以来解决更加复杂的问题
神经网络算法也是后面深度学习的时候的基础,例如:
ANN artificial neural network
MLP multiple layer percepton
CNN 卷积神经网络
RNN 循环神经网络
… …

Ⅰ,神经网络需要考虑的基本要素有哪些?

答:1,激活函数的选择。对应神经元里面的逻辑,包括两部分,相乘相加(Σ)和非线性的变化(f激活函数),相乘相加是固定不变的;非线性的变化(f激活函数)可以有很多选择,根据效果来
2,网络拓扑结构。处理更加复杂的问题,就需要更多的网络层,就需要每层上面设置更多的人工神经元
3,在去求解神经网络模型(w0,w1,w2…wn)的时候,选择什么样优化算法,SGD一样适用!

Ⅱ,激活函数有哪些?

答:1,Sigmoid函数,0到1之间 2,Tangent函数,-1到1之间 3,Relu函数,max(0,x)

Ⅲ,神经网络算法的隐藏层意义何在?

答:1,如果有隐藏层的话,就多了推理有演绎的能力
2,每多一个隐藏层,推理和演绎的过程更多,考虑的更深入
3,隐藏层的隐藏节点如果比之前的层上面的节点数要多,相当于进行了升维,考虑的因素更多,考虑的更全面
4,隐藏层的隐藏节点如果比之前的层上面的节点数要少,相当于进行了降维,去前面进行了归纳总结

六、项目实战

训练一个两次隐藏层(5个、2个),来进行训练,最后判断输入的结果是0还是1

from sklearn.neural_network import MLPClassifier#训练集参数
X = [[0., 0.], [1., 1.]]#输入层有两个输入节点
y = [0, 1]#输出层只有一个输出节点
"""
solver='sgd'                优化算法,这里使用的是随机梯度下降法
alpha=1e-5                  梯度下降那个系数,表示步长
activation='logistic'       激活函数,这里使用的是sigmoid函数
hidden_layer_sizes=(5, 2)   两层隐藏层,分别是5个和2个
max_iter=2000               最大迭代次数
tol=1e-4                    阈值,迭代终止条件
"""
clf = MLPClassifier(solver='sgd', alpha=1e-5, activation='logistic', hidden_layer_sizes=(5, 2), max_iter=2000, tol=1e-4)
clf.fit(X, y)#测试集参数
predicted_value = clf.predict([[2., 2.], [-1., -2.]])
print(predicted_value)
predicted_proba = clf.predict_proba([[2., 2.], [-1., -2.]])
print(predicted_proba)print([coef.shape for coef in clf.coefs_])
print([coef for coef in clf.coefs_])

输出结果:

"""
[1 1]
[[0.42020492 0.57979508][0.41408929 0.58591071]]
[(2, 5), (5, 2), (2, 1)]
[array([[ 0.08530062, -0.52124089, -0.29367687,  0.07361264,  0.02156327],[ 0.46945464,  0.22892193,  0.15913923, -0.52165397,  0.44346639]]), array([[-0.02538695,  0.02746434],[-0.12493617,  0.2892428 ],[-0.34109646,  0.05022483],[ 0.02789934, -0.49890685],[ 0.35519161,  0.46174166]]), array([[ 0.31453746],[-0.4271511 ]])]"""

网络模型如下:
在这里插入图片描述

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

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

相关文章

scale up 和 scale out

目前在调研sheepdog的时候,看到scale up和scale out的术语,理解了一下: 这两个词汇均是存储系统方面的概念 scale up: 纵向扩展 购买更大的存储,迁移原有数据到大的存储中 (添加新一个新的机器) scale out…

icse ccf_ICSE的完整形式是什么?

icse ccfICSE:印度中学教育证书 (ICSE: Indian Certificate of Secondary Education) ICSE is an abbreviation of the Indian Certificate of Secondary Education (ICSE). It is an educational board of the school in India for class 10th which is private an…

Delphi XE2 之 FireMonkey 入门(18) - TLang(多语言切换的实现)

一个小小的 TLang 类, 实现多语言切换, 挺好的. 它的工作思路是:1、首先通过 AddLang(语言代码) 添加语言类别, 如: AddLang(en)、AddLang(cn).2、每个语言代码对应一个 TStrings 列表, 获取方式如: LangStr[en]、LangStr[cn].3、可以手动填充这些数据、可以通过 LoadFromFile(…

leetcode 46. 全排列 思考分析

目录1、题目2、思考3、优化1、题目 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 2、思考 老规矩,先画出给出的例子的解空间树: 观察我们可以发现: 1、深度向下一层深入时,出现过的元素不能再出现&…

Arduino UNO R3开发板+MQ-2烟雾浓度传感器+火焰传感器+舵机+无源蜂鸣器+风扇+步进电机+WIFI模块+RGB三色LED灯+SIM900A所构成的室内安全报警模块

该系统模块主要由Arduino UNO R3开发板MQ-2烟雾浓度传感器火焰传感器舵机无源蜂鸣器风扇步进电机WIFI模块RGB三色LED灯SIM900A所组成,MQ-2烟雾浓度传感器达到不同的阈值的时候,LED灯会通过不同的颜色来进行警示。烟雾浓度增大,LED灯依次显示绿…

highcharts中series带参数的赋值问题

需要得到的代码如下: series: [{name: 棒号1,data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]}, {name: 棒号2,data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]}, {name: 棒号3,data: [-0.9, 0.6, 3.5, …

可编程ic卡 通用吗_8255可编程IC

可编程ic卡 通用吗Introduction 介绍 An 8255 programmable integrated circuit (IC) is an IC used for interfacing the microprocessor with the peripheral devices. It is a 40 pin IC which was introduced by INTEL to use with its 8085 and 8086 microprocessors. 82…

POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)

题意 在一个有N(1 ≤ N ≤ 1,000)个点环形图上有P(1 ≤ P ≤ 10,000)对点需要连接。连接只能连接环上相邻的点。问至少需要连接几条边。 思路 突破点在于最后的结果一定不是一个环!所以我们枚举断边,则对于…

九、逻辑回归多分类和softmax多分类

一、逻辑回归多分类 假设激活函数使用的是sigmoid函数 逻辑回归多分类其实是多个二分类而已,若求三分类问题需要对训练的数据样本进行适当的修改调整即可,如何修改样本数据可以参考逻辑回归二分类和多分类本质区别,内容都一样&#xff0c…

【C++grammar】继承与构造test1代码附录

目录1、main.cpp2、circle.cpp3、circle.h4、rectangle.cpp5、rectangle.h6、Shape.h1、main.cpp #include <iostream> #include <string> #include "Shape.h" #include "circle.h" #include "rectangle.h"//创建Shape/Circle/Rect…

hdu 4747 mex 线段树+思维

http://acm.hdu.edu.cn/showproblem.php?pid4747 题意&#xff1a; 我们定义mex(l,r)表示一个序列a[l]....a[r]中没有出现过得最小的非负整数&#xff0c; 然后我们给出一个长度为n的序列&#xff0c;求他所有的连续的子序列的mex(l,r)的和。 思路&#xff1a; 首先因为n的最大…

十、评估指标

我看过很多课程&#xff0c;不过内容都大差不差&#xff0c;也可以参考这篇模型评估方法 一、K折交叉验证 一般情况&#xff0c;我们得到一份数据集&#xff0c;会分为两类&#xff0c;一类是trainset训练集&#xff0c;另一类十testset测试集。通俗一点也就是训练集相当于平…

leetcode 47. 全排列 II 思考分析

题目 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 思考分析以及代码 这一题和前面的做过的两个题目有所关联&#xff1a; leetcode 46. 全排列 思考分析 再加上leetcode 491. 递增子序列 思考分析类似的去重操作。 先画出解空间树…

python添加数组元素_在Python中向数组添加元素

python添加数组元素An array can be declared by using "array" module in Python. 可以通过在Python中使用“数组”模块来声明数组 。 Syntax to import "array" module: 导入“数组”模块的语法&#xff1a; import array as array_alias_nameHere, im…

hdu 4472 Count(递推即dp)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4472 代码&#xff1a; #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> #include <queue> #include <vector> …

如何在Java中同步ArrayList?

同步ArrayList (Synchronizing ArrayList) In java, there are two ways to synchronize ArrayList, 在Java中&#xff0c;有两种同步ArrayList的方法&#xff0c; With the help of synchronizedList() method 借助syncedList()方法 With the help of CopyOnWriteArrayList&l…

十一、决策树和随机森林

这门课和另一门课内容都差不多&#xff0c;可以参考七、决策树算法和集成算法该篇博文。 一、决策树相关概念 逻辑回归本质 逻辑回归&#xff1a;线性有监督分类模型。常用求解二分类问题&#xff0c;要么是A类别要么是B类别&#xff0c;一般会以0.5作为划分阈值&#xff0c…

【C++grammar】继承与构造

目录1.继承1、Inheritance (继承)2、避免一个类被继承&#xff08; C11 &#xff09;3、继承实例4、完整代码5、继承的优缺点是什么?2.继承中的构造函数1、 派生类继承的成员2、调用基类构造函数3.继承中的默认构造函数1、基类的无参构造函数2、由编译器自动生成的基类构造函数…

C语言预处理

所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是&#xff23;语言的一个重要功能&#xff0c; 它由预处理程序负责完成。当对一个源文件进行编译时&#xff0c; 系统将自动引用预处理程序对源程序中的预处理部分作处理&#xff0c; 处理完毕…

(转)将cocos2dx项目从VS移植到Eclipse

本文转自:http://www.cnblogs.com/Z-XML/p/3349518.html 引言&#xff1a;我们使用cocos2d-x引擎制作了一款飞行射击游戏&#xff0c;其中创新性地融入了手势识别功能。但是我们在移植过程中遇到了很多的问题&#xff0c;同时也发现网上的资料少而不全。所以在项目行将结束的时…