没有合适的资源?快使用搜索试试~ 我知道了~
《Neural Networks and Deep Learning》读书笔记第四篇 本章其实和前面章节的关联性不大,所以大可将本章作为小短文来阅读,当然基本的深度学习基础还是要有的。 主要介绍了神经⽹络拥有的⼀种普遍性,比如说不管目标函数是怎样的,神经网络总是能够对任何可能的输入,其值(或者说近似值)是网络的输出,哪怕是多输入和多输出也是如此,我们大可直接得出一个结论: 不论我们想要计算什么样的函数,我们都确信存在⼀个神经⽹络(多层)可以计算它 试想以下这种普遍性代表着什么,我觉得代表着做更多可能的事情(将其看做计算一种函数): 比如将中文翻译成英文 比如根据⼀个 mp4 视频⽂件⽣成⼀个描
资源详情
资源评论
资源推荐
神经神经络可以计算任何函数的可视化证明络可以计算任何函数的可视化证明
《Neural Networks and Deep Learning》读书笔记第四篇
本章其实和前面章节的关联性不大,所以大可将本章作为小短文来阅读,当然基本的深度学习基础还是要有的。
主要介绍了神经络拥有的种普遍性,比如说不管目标函数是怎样的,神经网络总是能够对任何可能的输入,其值(或者说近似值)是网络的输出,哪怕是多输入和多输出也是如此,我们大可直接得出一
个结论:
不论我们想要计算什么样的函数,我们都确信存在个神经络(多层)可以计算它
试想以下这种普遍性代表着什么,我觉得代表着做更多可能的事情(将其看做计算一种函数):
比如将中文翻译成英文
比如根据个 mp4 视频件成个描述电影情节并讨论表演质量的问题
…
现实往往是残酷的,我们知道有这个网络存在,比如中文翻译成英文的网络,通常情况下想得往往不可得,网络在那里,但更可能我们得不到,怎么办?
前面我们知道,我们通过学习算法来拟合函数,学习算法和普遍性的结合是种有趣的混合,直到现在,本书直是着重谈学习算法,到了本章,我们来看看普遍性,看看它究竟意味着什么。
两个预先声明两个预先声明
在解释为何普遍性定理成前,关于神经神经络可以计算任何函数络可以计算任何函数有两个预先声明需要注意一下:
这句话不是说个络可以被来准确地计算任何函数,而是说,我们可以获得尽可能好的个近似,通过增加隐藏元的数量,我们可以提升近似的精度,同时对于目标精度,我们需要确定精度范围:,其中
按照上的式近似的函数类其实是连续函数,如果函数不是连续的,也就是会有突然、极陡的跳跃,那么般来说法使个神经络进近似,这并不意外,因为神经络计算的就是输的连续函数
普遍性定理的表述:包含个隐藏层的神经络可以被来按照任意给定的精度来近似任何连续函数
接下来的内容会使有两个隐藏层的络来证明这个结果的弱化版本,在问题中会简要介绍如何通过些微调把这个解释适应于只使个隐藏层的络并给出证明。
一个输入和一个输出的普遍性一个输入和一个输出的普遍性
先从一个简单的函数(即只有一个输入和一个输出)开始,我们将利用神经网络来近似这个连续函数:
f(x)
第一章我们就探讨过多层感知机实现异或,这次同样的,我们加入一个隐藏层就可以让函数舞动起来舞动起来,比如下面这个有一个隐藏层、两个隐藏神经元的网络:
ia_100002713
第一步,暂时只考虑顶层的神经元,第一章也讲过 S 型神经元,所以输出范围类似上图右上角,重点看看这个 S 型函数,前面已经说过:
其中:,参见右上角的图,让我们考虑一下几个情况:
当不变,逐渐增加的情况下,输出会在原来的基础上变大,图像会相对向左边运动,因为没变,所以图像形状不会变
上述情况让键减小,图像会右移,同样图像形状不变
当不变,减小,很显然,图像的陡峭程度会下降,反之亦然
下图是书中给出的图示:
ia_100002714
其实我们完全可以自己绘制这个过程,利用Python的matplotlib可以很好地完成这个事情:
import matplotlib.pyplot as plt
import numpy as np
def sigmoid(w, b, x):
return 1.0 / (1.0 + np.exp(-(w * x + b)))
def plot_sigmoid(w, b):
x = np.arange(-2, 2, 0.1)
y = sigmoid(w, b, x)
plt.plot(x, y)
先看下增减下图像的移动情况:
plt.figure(12)
plt.subplots_adjust(wspace=0.2, hspace=0.5)
plt.subplot(221)
# 绘制原始图像
plt.title("w = 8 b = -4")
w, b = 8, -4
plot_sigmoid(w, b)
plt.subplot(222)
# b增加的图像
plt.title("w = 8 b = 4")
w, b = 8, 4
plot_sigmoid(w, b)
plt.subplot(223)
plt.title("w = 8 b = 4")
w, b = 8, 4
plot_sigmoid(w, b)
plt.subplot(224)
# b减小的图像
plt.title("w = 8 b = 1")
w, b = 8, 1
plot_sigmoid(w, b)
plt.show()
剩余8页未读,继续阅读
weixin_38599412
- 粉丝: 6
- 资源: 930
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 1731260448754.jpeg
- 博图 博途1s保护解除DLL Siemens.Automation.AdvancedProtection.dll
- 基于Java和Shell语言的csj_21_08_20_task1设计源码分享
- 基于Typescript和Python的MNIST卷积神经网络模型加载与预测浏览器端设计源码
- 基于Python的RasaTalk语音对话语义分析系统源码
- 基于Vue框架的租车平台前端设计源码
- 基于Java和C/C++的浙江高速反扫优惠券码830主板设计源码
- 基于Java的一站式退休服务项目源码设计
- 基于Java语言实现的鼎鸿餐厅管理系统设计源码
- 基于Java的iText扩展库:简化PDF创建与中文字体应用设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0