把猫咪和狗子分开,从图中很容易就发现,直接中间切一刀,两边就分开了。函数也很简单y=kx+b,一条直线呗。
问题来了!
如果我掏出这样的模型,那么阁下应该如何应对。
那就多层神经网络(多切几刀,手动狗头)
诶!!!它来了
多层神经网络
• 神经网络是由多个神经元组合而成,前一个神经元的结果作为后一个神经元的输入,依次组合而成。神经网络一般分为三层,第一层作为输入层,最后一层作为输出层,中间的全部是隐含层。
• 理论证明,任何多层网络可以用三层网络近似地表示。
• 一般凭经验来确定隐藏层到底应该有多少个节点,在测试的过程中也可以不断调整节点数以取得最佳效果。
前馈神经网络
• 人工神经网络模型主要考虑网络链接的拓扑结构、神经元特征、学习规则等。
• 其中,前馈神经网络也称为 多层感知机
激活函数
• 激活函数是神经网络设计的一个核心单元。
• 在神经网络中,把处于在活跃状态的神经元称为激活态,处于非活跃状态的神经元称为抑制态。激活函数赋予了神经元自我学习和适应的能力。
插个嘴:激活函数处于加权函数之后,输出之前
• 激活函数的作用是为了在神经网络中引入非线性的学习和处理能力。
• 常用的激活函数(满足 1 非线性 2 可微性 3 单调性)
所以怎么理解呢,改变他们的线性关系,这个与另一个特征结合起来就很好理解,归一化。
先看下几个激活函数的曲线图
sigmoid:
tanh:
RELU:
可以看出,除了RELU之外,其他两个都被某种神秘力量掰弯了,嗯?掰弯了,哲学♂大扳手!!!
但其实RELU也被折了一下,他们都失去了一些宝贵的东西(我指的是线性),除了RELU,其他两种在归一化的特性显示也特别明显。
后面还会介绍其他激活函数,后期单独出一期各个激活函数的优缺点及比较。一键三连走起好吧。
张量tensor
什么是张量?张亮麻辣烫,哇,脆皮豆腐贼好吃(口水)
• 任何算法得以运行,都必须依靠特定的数据结构,而用于将各种数据统一封装并输入网络模型的数据结构叫tensor,也就是张量。张量在不同的情况下存有不同的形式。
• 张量一大特征是维度,一个0维张量就是一个常量。在Python中,一个张量的维度可以通过读取它的ndim属性来获取。(我们常用的数组就等价与一维张量,一个二维数组就是一个二维张量)
• 所谓n维张量,其实就是一维数组,数组中的每个元素都是n-1维张量。由此可见,3维张量其实就是一个一维数组,数组中的每个元素就是2维数组。
说直白点就是一种数据结构!!!
[
[
[1,2],
[3,4]
],
[
[5,6],
[7,8]
],
[
[9,10],
[11,12]
]
]
看个例子,这个张量如何表示呢?(3,2,2),外层3个数组(三维),每个数组(维度)里有2个子数组(子维度),每个子数组(子维度)中有2个数据
[
[
[1,2],
[3,4],
[13,14]
],
[
[5,6],
[7,8],
[15,16]
],
[
[9,10],
[11,12],
[17,18]
]
]
这样就是(3,3,2)
如何设计神经网络
1、使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数
2、特征向量在被传入输入层时通常要先标准化到0-1之间(为了加速学习过程)
3、离散型变量可以被编码成每一个输入单元对应一个特征值可能赋的值比如:特征值A可能取三个值(a0, a1, a2), 可以使用3个输入单元来代表A。
如果A=a0, 那么代表a0的单元值就取1, 其他取0;1,0,0
如果A=a1, 那么代表a1的单元值就取1,其他取0,以此类推 0,1,0
4、神经网络既可以用来做分类(classification)问题,也可以解决回归(regression)问题
(1)对于分类问题,如果是2类,可以用一个输出单元表示(0和1分别代表2类);如果多于2类,则每一个类别用一个输出单元表示 1 0 0 0 1 0
(2)没有明确的规则来设计最好有多少个隐藏层,可以根据实验测试和误差以及精准度来实验并改进。
对隐含层的感性认识
举个栗子:你喜不喜欢我?你只需要回答喜欢还是不喜欢,而不是扯其他乱七八糟的东西。
那么所有的节点都应该是这样的,我希望的是得到一个肯定的回答,而不是模棱两可的回答。
我希望所有的节点都是钢铁直男。
什么是深度学习(Deep Learning)?
The biggest title in this blog!!!
给你点color see see
深度神经网络 & 深度学习
• 传统的神经网络发展到了多隐藏层的情况,
• 具有多个隐藏层的神经网络被称为深度神经网络,基于深度神经网络的机器学习研究称之为深度学习。
• 如果需要细化和区分区别,那么,深度神经网络可以理解为对传统多层网络进行了结构、方法等方面的优化。
写在最后的:
即便我的世界失去了你
可是生活仍在继续
期待在下一个路口遇见下一个你