神经网络基础知识 1

1、什么是神经网络?

        神经网络是由具有适应性的简单单元(神经元模型)组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。【Kohonen 1988】

        神经网络的一 个重要性质是它可以自动地从数据中学习到合适的权重参数。

        用图来表示神经网络的话,如图所示。我们把最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层。中间层有时也称为隐藏层。“隐藏”一词的意思是,隐藏层的神经元(和输入层、输出层不同)肉眼看不见。

《深度学习入门》神经网络的例子

2、激活函数

        感知机与神经网络的主要区别就是激活函数,其他方面,比如神经元的多层连接的构造、信号的传递方法等,基本上和感知机是一样的。               

         激活函数会将输入信号的总和转换为输出信号。例

激活函数示例

          激活函数的作用在于决定如何来激活输入信号的总和。激活函数是连接感知机和神经网络的 桥梁。

《深度学习入门》激活函数计算过程

    

        感知机中激活函数用的是阶跃函数。

        神经网络中激活函数用的是sigmoid函数:exp(−x)表示e −x 的意思。

          神经网络中用sigmoid函数作为激活函数,进行信号的转换,转换后的信号被传送给下一个神经元。

        阶跃函数 VS sigmoid函数

        首先用Python实现阶跃函数图像:

import numpy as np
import matplotlib.pylab as plt
def step_function(x):
 return np.array(x > 0, dtype=np.int)
x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()

        np.arange(-5.0, 5.0, 0.1)在−5.0到5.0的范围内,以0.1为单位,生成 NumPy数组([-5.0, -4.9, ..., 4.9])。step_function()以该NumPy数组为参数,对数组的各个元素执行阶跃函数运算,并以数组形式返回运算结果。 

阶跃函数图像

    

Python实现sigmoid函数:

import numpy as np
import matplotlib.pylab as plt
def sigmoid(x):
 return 1 / (1 + np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()
sigmoid函数

         首先注意到的是“平滑性”的不同。sigmoid函数是一条平滑的曲线,输出随着输入发生连续性的变化。而阶跃函数以0为界,输出发生急剧性的变化。sigmoid函数的平滑性对神经网络的学习具有重要意义。

        另一个不同是:感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续 的实数值信号。

        相同性质:当输入信号为重要信息时, 阶跃函数和sigmoid函数都会输出较大的值;当输入信号为不重要的信息时, 两者都输出较小的值。且不管输入信号有多小,或者有多大,输出信号的值都在0到1之间。两者均为非线性函数。

        线性函数VS非线性函数

        神经网络必须使用非线性函数。如果线性函数(h(x)=cx)作为激活函数,加深神经网络的层数没有意义。例:三层神经网络y(x)=h(h(h(x)))可以写成y(x)=c*c*cx,即y(x)=ax(a=c*c*c)没有隐藏层神经网络。因此,为了发挥叠加层所带来的优势,激活函数必须使用非线性函数。

        ReLU函数

        ReLU函数在输入大于0时,直接输出该值;在输入小于等于0时,输出0。

ReLU函数

        

        图像实现: 

import numpy as np
import matplotlib.pylab as plt
def relu(x):
 return np.maximum(0, x)
x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)
plt.plot(x, y)
plt.ylim(-1, 5) # 指定y轴的范围
plt.show()
ReLU函数

          在神经网络发展的历史上,sigmoid函数很早就开始被使用了,而最近则主要使用ReLU(Rectified Linear Unit)函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值