神经网络学习(多层感知机)第一篇

在上一篇博客感知机的学习当中,我们发现单层感知机有一个非常严重的问题,即对一些稍微复杂的函数无能为力(如最为典型的“异或”操作)。所以才会有多层感知机的出现,它由一个输入层,一个输入层和多个隐藏层组成。神经网络和前面介绍的感知机有很多共同点。这里,我们主要以两者 的差异为中心,来介绍神经网络的结构 。
在观察神经网络中信号的传递方法之前,我们先复习一下感知机。假设感知机只接收两个信号x1和x2,输出Y。我们用数学表达式来表示这个感知机:
在这里插入图片描述
b是被称为偏置的参数,由于控制神经元被激活的容易程度,而w1和w2是表示各个信号的权重的参数,用于控制各个信号的重要性。如果我们添加了权重为b的输入信号1.那么这个感知机将x1,x2,1三个信号作为神经元的输入,将其和各自的权重相乘后,传送至下一个神经元。下图可以直观看出:

在这里插入图片描述

我们将上面的数学表达式用一个函数来表示这种分情况的动作,引入新函数h(x),则可表示为:
在这里插入图片描述
在这个式子中,输入信号的总和会被h(x)转换,转换后的值就是输出y.这里我们将h(x)称之为激活函数,激活函数的作用在于如何来激活输入信号的总和。上面这个激活函数是一个阶跃函数。接下来我们将上面的式子写的更详细一点就可以分成这么两个式子:
在这里插入图片描述
a为加权输入信号和偏置的总和,然后用激活函数h(x)转换为输出y.
在这里插入图片描述

在这里插入图片描述
下面,我们将仔细介绍激活函数。激活函数是连接感知机和神经网络的 桥梁。。一 般而言,“朴素感知机”是指单层网络,指的是激活函数使用了阶 跃函数的模型。“多层感知机”是指神经网络,即使用sigmoid  函数(后述)等平滑的激活函数的多层网络。

(1)sigmoid函数
神经网络中用sigmoid函数作为激活函数,进行信号的转换,转换后的信号被传送给下一个神经元。实际上,前面介绍的感知机和神经网络的主要区别就在于这个激活函数。
神经网络中经常使用的一个激活函数是sigmoid函数:
在这里插入图片描述
(2)阶跃函数:
在这里插入图片描述
(3)RELU函数:
在这里插入图片描述
上述三种激活函数的代码实现:

import numpy as np
import matplotlib.pylab as plt
#def step_function(x):#阶跃函数
#    return np.array(x > 0, dtype=np.int)
#def step_function(x):
#    y = x > 0    
#    return y.astype(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()
#def sigmoid(x):#sigmoid函数
#    return 1/(1+np.exp(-x))
#x=np.arange(-4.0,4.0,0.1)
#y=sig(x)
#plt.plot(x,y)
#plt.ylim(0,1)
#def relu(x):#relu函数
#    return np.maximum(0, x)
#print(relu(1))
#x=np.arange(-2.0,2.0,0.1)
#y=relu(x)
#plt.plot(x,y)
#plt.ylim(-0.2,1)
#plt.imshow
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值