栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

神经网络基础知识 1

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

神经网络基础知识 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)函数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号