Datawhale组队学习_Task04:详读西瓜书+南瓜书第5章
第5章 神经网络
5.1 神经元模型
- 基本定义:神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。
- M-P神经元模型:
在此模型中,神经元接收到来自其他n个神经元传递过来的带有权重的信号,并将总输入值与神经元的阈值进行比较,处理后以产生神经元的输出。
通常使用挤压函数来作为激活函数,即如下图:
5.2 感知机与多层网络
- 感知机:两层神经元(输入层+输出层)组成,期中输入层接受外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”。
- 感知机的逻辑运算:
假设对于阶跃函数y=\({f(\sum_{i}w_ix_i-\Theta)}\)- “与”(\({x_1\bigwedge x_2}\)):令\({w_1=w_2=1,\Theta=2}\),则y=\({f(1·x_1+1·x_2-2)}\),仅在\({x_1=x_2=1}\)时,y=1;
- “或”(\({x_1\bigvee x_2}\)):令\({w_1=w_2=1,\Theta=0.5}\),则y=\({f(1·x_1+1·x_2-0.5)}\),仅在\({x_1=1或x_2=1}\)时,y=1;
- “非”(\({\neg x_1}\)):令\({w_1=-0.6,w_2=0,\Theta=-0.5}\),则y=\({f(-0.6·x_1+0·x_2+0.5)}\),当\({x_1=1}\)时,y=0;当\({x_1=0}\)时,y=1;
- 对于一般常见神经网络的缺陷:
由于感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力较为有限。若学习两类模式时线性可分的,则一定存在一个线性超平面将二者分开;否则若感知机在学习过程中发生振荡,无法求合适解。
处理非线性可分问题时,通常考虑使用多层功能神经元。
多层前馈神经网络:每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。
5.3 误差逆传播算法
- BP算法的主要工作流程:先将输入样例提供给输入层神经元,然后逐层将信号前传,知道产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和与之进行调整,循环整个迭代过程,直到某些条件停止。
- BP算法的目标是要最小化训练集D上的积累误差
伪代码如下所示:
#输入:训练集D={(${x_k,y_k}^m_{k=1}$)};
#学习率${\eta}$
过程:
1.在(0,1)范围内随机初始化网络中所有连接权和阈值
2.repeat
3. for all(x_k,y_k)∈D do
4. 根据当前参数计算当前样本的输出${\hat y_k}$;
5. 计算出输出层神经元的梯度项g_j;
6. 计算出隐层神经元的梯度项e_h;
7. 更新连接权与阈值;
8. end for
9. until 达到停止条件
#输出:连接权与阈值确定的多层前馈神经网络
具体的公式推导内容在纸上,由于符号太多不想敲上来了,这里贴一个参照的博客 [神经网络值反向传播算法公式推导](https://www.cnblogs.com/jsfantasy/p/12177275.html)
Datawhale组队学习_Task04:详读西瓜书+南瓜书第5章的更多相关文章
- Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文
前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 ...
- iPhone应用开发 UITableView学习点滴详解
iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...
- android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
- Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解
Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解 操作系统:Windows 7 JDK版本:1.6.0_33 Eclipse版本:Juno ...
- 《C++ Primer》学习总结;兼论如何使用'书'这种帮助性资料
6.25~ 6.27,用了3天翻了一遍<C++ Primer>. ▶书的 固有坏处 一句话: 代码比 文字描述 好看多了.————> 直接看习题部分/ 看demo就行了 看文字在描述 ...
- 《C++ Primer Plus》啃书计 第1~4章
<C++ Primer Plus>啃书计 第1~4章 第一章 预备知识 1.1-1.3略过 1.4 程序创建的技巧 1. cfront,它将C++源代码翻译成C源代码,然后再使用标准C编译 ...
- JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助
上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...
- noj 2033 一页书的书 [ dp + 组合数 ]
传送门 一页书的书 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 53 测试通过 : 1 ...
- 《如何正确学习JavaScript》读后小结
在segmentfault上读的一篇学习JavaScript路线的文章,做个小结. 一.简介.数据类型.表达式和操作符 (1)<JavaScript权威指南>前言1-2章&< ...
- Gradle学习系列之三——读懂Gradle语法
在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...
随机推荐
- js 数组中的方法
<!DOCTYPE html><html><head> <title>数组的方法</title> <meta charset=&quo ...
- linux使用iptables屏蔽ip地址
一.iptables命令介绍: netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,在安装系统的时 ...
- Redis 的大 Key 对持久化有什么影响?
作者:小林coding 图解计算机基础(操作系统.计算机网络.计算机组成.数据库等)网站:https://xiaolincoding.com 大家好,我是小林. 上周有位读者字节一二面时,被问到:Re ...
- synchronized锁详解
synchronized的意义 解决了Java共享内存模型带来的线程安全问题: 如:两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?(针对这个问题进行分析 ...
- 学习完nio的一个小笔记吧
这是一个nio网络通信服务端的demo,主要就学习了selector的一些用法,以及它里面的事件类型 selector是对nio的一个优化,它能保证既能高效处理线程中的事件,又能保证线程不会一直占用c ...
- 使用traefik进行金丝雀发布
文章转载自:https://mp.weixin.qq.com/s/nMMN7hAJK6SFn1V1YyxvHA 在 Traefik 2.0 中以服务负载均衡的形式进行了支持.可以将服务负载均衡器看成负 ...
- Solutions:应用程序性能监控/管理(APM)实践---python/flask
本文部分内容转载自:https://blog.csdn.net/UbuntuTouch/article/details/102844900 官方文档:https://www.elastic.co/gu ...
- Systemd 进程管理教程
systemd 介绍 systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本 ...
- 使用Docker方式部署Mongodb多副本集(replSet)
linux主机ip:192.168.0.253 1. 创建网络与容器 docker pull mongo docker network create mongo-rs docker run --nam ...
- 使用docker-compose部署SonarQube
sonarqube 安装 1.系统配置,避免启动问题 # 系统配置,避免启动问题 echo "vm.max_map_count=262144" >> /etc/sysc ...