第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章的更多相关文章

  1. Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

    前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 ...

  2. iPhone应用开发 UITableView学习点滴详解

    iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...

  3. android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升

    android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升

  4. 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 ...

  5. 《C++ Primer》学习总结;兼论如何使用'书'这种帮助性资料

    6.25~ 6.27,用了3天翻了一遍<C++ Primer>. ▶书的 固有坏处 一句话: 代码比 文字描述 好看多了.————> 直接看习题部分/ 看demo就行了 看文字在描述 ...

  6. 《C++ Primer Plus》啃书计 第1~4章

    <C++ Primer Plus>啃书计 第1~4章 第一章 预备知识 1.1-1.3略过 1.4 程序创建的技巧 1. cfront,它将C++源代码翻译成C源代码,然后再使用标准C编译 ...

  7. JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助

    上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...

  8. noj 2033 一页书的书 [ dp + 组合数 ]

    传送门 一页书的书 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 53            测试通过 : 1 ...

  9. 《如何正确学习JavaScript》读后小结

    在segmentfault上读的一篇学习JavaScript路线的文章,做个小结. 一.简介.数据类型.表达式和操作符 (1)<JavaScript权威指南>前言1-2章&< ...

  10. Gradle学习系列之三——读懂Gradle语法

    在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

随机推荐

  1. KVM里安装不是原装的winxp系统镜像

    从网上下载的winxp系统镜像,虽然是iso格式的,但是里面的内容是如下情况的 因此安装的话,需要采取如下步骤 1.添加一个光驱引导,挂载一个iso格式的pe 2.再添加一个光驱,挂载iso格式的wi ...

  2. Docker 容器日志管理

    Docker 日志分为两类: Docker 引擎日志(也就是 dockerd 运行时的日志), 容器的日志,容器内的服务产生的日志. 一 .Docker 引擎日志 Docker 引擎日志一般是交给了 ...

  3. nexus迁移

    1.找到nexus主目录和sonatype-work目录打包,一般在 /usr/local/nexus 和 /usr/local/sonatype-work # tar -czvf nexus.tar ...

  4. 解决centos系统突然间网络不通的问题:Global IPv6 forwarding is disabled in configuration, but not currently disabled in kernel

    问题描述:公司里的一台centos 7.6主机,连接公司的路由器,里面设置的静态ip,之前用的好好的,但是有一次突然间ping不通了,之前是可以ping通的. 问题分析: 查看网络配置文件: TYPE ...

  5. 关闭You have new mail in /var/spool/mail/root提醒

    echo "unset MAILCHECK">> /etc/profile #以root权限执行 或者用sudo source /etc/profile cat /de ...

  6. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(25)-Fiddler如何优雅地在正式和测试环境之间来回切换-下篇

    1.简介 在开发或者测试的过程中,由于项目环境比较多,往往需要来来回回地反复切换,那么如何优雅地切换呢?宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考. 2.实际工作场景 2.1问题场景 (1)已发布 ...

  7. 学习ASP.NET Core Blazor编程系列四——迁移

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  8. P3998 [SHOI2013]发微博 方法记录

    原题链接 [SHOI2013]发微博 题目描述 刚开通的 SH 微博共有 \(n\) 个用户(\(1\sim n\) 标号),在这短短一个月的时间内,用户们活动频繁,共有 \(m\) 条按时间顺序的记 ...

  9. 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea

    前言 在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea.今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea. 关于 Gite ...

  10. 『现学现忘』Git基础 — 35、Git中删除文件

    目录 1.删除文件说明 2.删除文件操作 (1)仅删除暂存区的文件 (2)完全删除文件 3.本文用到的命令总结 1.删除文件说明 在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态. 若要是 ...