读书笔记(4)
Page37页继续往下:
第三章: 神经网络
上一章节里面,设定权重的工作、即确定合适的、能符合预期的输入与输出的权重,是由人工来设定的。神经网络就是为了解决这个人工设定的问题,具体地讲,神经网络的一个重要性质就是它可以自动地从数据中学习到合适的权重参数。
本章节先介绍神经网络的概要,再重点关注神经网络进行识别时的处理。第4章再介绍如何从数据中学习权重参数。从感知机到神经网络
1.1 神经网络的例子:
用图来表示神经网络的话,最左边的一列是输入层、最右边的一列为输出层,中间一列为中间层,中间层有时候也称为隐藏层。隐藏层的神经元肉眼看不见。另外本书把输入层到输出层依次称为0层1层2层。(层号的目的是和python的序列对应)如下图,0对应输入层,1对应中间层,2对应输出层。
神经网络的例子
实际上就神经元的连接方式,和感知机没有任何差异。那么神经网络是怎么传递的呢?
3.1.2 复习感知机
感知机接受x1和x2两个输入信号,输出y。如果用数据式来表示上图的感知机,则如下所示:
式3.1
b是被称为偏置函数的参数,用于控制神经元被激活的容易程度;而w1和w2是表示各个信号的权重的参数,用于控制各个信号的重要性。
如果要明确的在图中表示偏置b,可以像下图一样。由于偏置的输入信号一直是固定值,所以为了区别其它神经元,在图中把这个神经元涂成灰色。
现在将公式3.1 改为更简洁的形式,用一个函数来表示分情况动作(超过0则输出1,否则输出0)。引入新函数h(x),将公式改为下面的公式3.2,和公式3.3
3.2
3.3
图3-3 明确表示出偏置
3.1.3 激活函数登场
刚才登场的h(x) 函数会将输入信号的综合转换为输出信号,这种函数一般称为激活函数(activation function)。如"激活"一词所示,激活函数的作用在于决定如何来激活输入信号的总和。
明确显示激活函数的计算过程
如上图所示,表示神经元的0 中明确显示了激活函数的计算过程,即加权总和为节点a,然后节点a被激活函数h()转换成节点y. 这里我们称a和y为"节点",其实它和之前所说的"神经元"含义相同。
激活函数是连接感知机和神经网络的桥梁。一般而言,"朴素感知机"是指单层网络,指的是激活函数使用了阶跃函数的模型,"多层感知机"是指神经网络,即使用sigmoid函数(后述)等平滑的激活函数的多层网络。
3.2 激活函数
激活函数以阈值为界,一旦超过阈值,就切换输出,这样的函数称为"阶跃函数",也就是说,在激活函数的众多候选函数中,感知机使用了阶跃函数。如果感知机使用了其它函数作为激活函数的话会怎么样呢?实际上,如果将激活函数从阶跃函数换成其他函数,就可以进入神经网络的世界了。
3.2.1 sigmoid函数
神经网络中经常使用的一个激活函数就是式(3.6)表示的sigmoid函数。(sigmoid function)
3.6
神经网络中使用sigmoid函数作为激活函数、进行信号的转换,转换后的信号被传递给下一个神经元。
3.2.2 阶跃函数的实现
我们试着用Python画出阶跃函数的图,如下所示,当超过0时,输出1,否则输出0
这个是实现简单,但是参数x只能接受实数(浮点数)。也就是说,允许step_function(3.0)的调用,单不允许参数取NumPy数组,例如step_funtion(np.array([1.0,2.0]). 为了便于后面的操作,我们把它修改为支持NumPy数组的实现:
y.astype()方法转换NumPy数组的类型。Python将布尔函数转换为Int型后,True会转换为1,False会转换为0.
3.2.3 阶跃函数的图形
使用matplotlib库来定义阶跃函数图形
阶跃函数的图形如下
3-6
阶跃函数以0为界,输出从0转化为1.它的数值呈阶梯式变化,所以称为阶跃函数。
3.2.4 sigmoid函数的实现import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1/(1+np.exp(-x)) x = np.arange(-2,2,0.1) y = sigmoid(x) plt.plot(x,y) plt.show()
上图实现
书中解释了,sigmoid() 函数 其实和np.array 可以配合进行运算,因为NumPy数组支持广播功能,如果标量和Numpy数组之间进行运算,则标量会和NumPy数组的各个元素进行运算。
3.2.5 sigmoid 函数和阶跃函数的比较import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1/(1+np.exp(-x)) def step_function(x): return np.array(x>0,dtype=np.int) x = np.arange(-5.0,5.0,0.1) y = sigmoid(x) z = step_function(x) plt.plot(x,y,label="sigmoid") plt.plot(x,z,linestyle="--",label="step") plt.ylim(-0.1,1.1) plt.lengend() plt.show()
这里step_function() 以阶跃函数为参数,对数组的各个元素执行阶跃函数运算,并以数组形式返回运算结果,对数组y 和 z 进行绘图,如上图所示。
观察上图,首先注意到"平滑性"不同,也就是说,感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。
阶跃函数就像竹筒敲石头一样,制作是否传输的两个动作,而sigmoid函数就像水车一样,根据流过来的数量相应调整传送出去的水量。
两个函数的共同性质是:不管输入信号有多小,或者多大,输出信号的值都在0和1之间。另外,输入小时,输出接近0,输入增大,输出向1靠近。
3.2.6 非线性函数:
阶跃函数和sigmoid 函数还有其它共同点,两者均为非线性函数,sigmoid函数是一条曲线,阶跃函数是一条像阶梯一样的折线,两者都算非线性的函数。
输出值时输入值的常数倍的函数称为线性函数(用数学式表示为h(x) = cx, c为常数),线性函数是一条笔直的直线,而非线性函数,顾名思义,指的是不像线性函数那样呈现出一条直线的函数。
线性函数的问题是,不管如何加深层数,总是存在与之等效的"无隐藏层的神经网络"。为了具体的(稍微直观地)理解这一点,我们来思考下面这个简单的例子。
把y(x) = h(h(h(x))) 运算对应3层神经网络,这个运算会进行y(x) = c*c*c*X 的乘法运算,如这个例子所示,使用线性函数时,无法发挥多层网络带来的优势。为了发挥叠加层所带来的优势,激活函数必须使用非线性函数。
3.2.7 ReLU函数
到目前为止,我们介绍了作为激活函数的阶跃函数和sigmoid函数。在神经网络发展的历史上,sigmoid函数很早就开始被使用了,而最近则主要使用ReLU(Rectified Linear Unit)函数。
ReLU 函数在输入大于0 时,直接输出该数值;在输入小于等于0时,输出0.ReLU 函数可以表示为下面的公式:
3.7
如下图所示,ReLU函数是一个非常简单的函数,因此,ReLU函数的实现也很简单,可以写成如下形式:
本章剩余部分使用sigmoid函数作为激活函数,但在本书的后半部分,主要使用ReLU函数。
ReLU函数
这里使用了NumPy的maximum函数,maximum 函数会从输入的数值中选择较大的那个值进行输出。
看到page 50 ,待继续。
实在没有办法的情况,怎么喝酒酒前,可适量饮些淡盐水或补液盐,什么蜂蜜水的都没有用。当然,你说口感好,那也是一种选择。酒中,首先不要空腹喝酒。喝白酒,不可一饮而尽。喝啤酒,应待啤酒沫落下以后再喝。否则,轻则腹涨
稳定同位素MedChemExpress稳定同位素质谱内标定量的极佳选择质谱分析具有灵敏度高样品用量少分析速度快分离和鉴定同时进行等优点。随着质谱定量检测技术的广泛发展,稳定同位素类化合物作为内标定量(StableIso
额济纳胡杨树的传奇额济纳属于秋天,当戈壁上的秋风吹过,蒙古高原的金黄色就一直向南延伸,渐渐地将整个额济纳绿洲包裹起来,千年不倒的胡杨树迎风曼舞,独领风骚,金灿灿地一团团一簇簇,遮天蔽日,如童话世界一
北方的塔,南方的塔塔,最初是由印度传到中国的,在印度佛教发源地,最初是高僧的墓地,名叫窣堵波,不过最初塔是实心的。泰国窣堵波印度窣堵波后来佛教传入中国,塔这种纪念高僧的形式也因之而来。早先的塔只作为
退休养老像极了横渡沙漠,我囤的不只是现金当疫情结束后,你想来一场说走就走的旅行吗?如果想,我们来一趟横渡沙漠,怎么样?出发前,你会做攻略吗?我想,去一个陌生的地方,至少会先了解当地的吃喝玩乐吧?这次沙漠之旅,预计行程是3
日本小组第一出线,德国比利时出局惊心动魄的死亡之组,西班牙德国险些双双出局今天凌晨,世界杯小组赛E组第三轮,日本对阵西班牙,德国对阵哥斯达黎加。两场比赛同时进行,四个队都有机会晋级,也都有可能出局。赛前,西班牙一
第三届中国服务业开放与服务贸易发展论坛召开构建更高水平开放型服务经济新格局中国网科技12月2日讯近日,第三届中国服务业开放与服务贸易发展论坛开幕论坛在线上举办。据悉,论坛重点聚焦复杂形势下服务贸易应对策略,构建更高水平开放型服务经济新体制和新格局,数字技
中国企业需要了解欧盟企业可持续发展报告指令欧洲理事会于2022年11月28日正式通过了企业可持续发展报告指令(CorporateSustainabilityReportingDirective,CSRD)。CSRD现在将在
半月谈丨新能源汽车装上中国芯新能源汽车装上中国芯半月谈记者王攀印朋当前,全球集成电路行业在细分领域出现多极分化趋势。智能手机等消费电子市场疲软,而汽车行业含芯量显著增加,成为集成电路行业的重要动力。在这个领域
NBA排名榜东部两极分化,西部卡位战激烈,全联盟榜首无悬念20222023赛季NBA常规赛正在如火如荼的进行中,截止12月2日比赛结束,东西部排名榜呈现出不同的格局东部两极分化,西部卡位战激烈,雄鹿以超过80的胜率领跑全联盟,魔术则以刚超
最新消息!乒超联赛仅打八天,陈梦转会费曝光,马龙无缘一单12月3日山东威海,今年的乒超联赛将正式拉开帷幕。根据组委会的最新安排,原本9天的赛程再度缩减,12月6日全国上下将停止一切娱乐活动,乒超也不例外。第一阶段小组赛由6天改为5天,这