(21)心有猛虎,细嗅蔷薇之Backward Propagation

(21)心有猛虎,细嗅蔷薇之Backward Propagation


为加深理解,我们运行一下Neuron_Network_Entry.py,看一下盘古自研框架的运行结果:

……

第一条预测的实际结果是0,预测值Prediction是0.47751024652695706,误差的计算可以采用实际值和预测值相减,或者使用方差等计算方法,这里如果就直接相减,0.47751024652695706减去0的误差就是0.47751024652695706,那么这个误差是怎么导致的?这是梯度下降理解最大的难点。回到TensorFlow的控制台,我们从后往前推看谁对这个误差负责的时候,要分别乘以它的权重,例如第三层隐藏层第一个神经元对它负责多少,肯定是误差乘以这个神经元和输出结果关联的权重;第三层隐藏层第二个神经元对它负责多少,肯定也是误差乘以这个神经元和输出结果关联的权重,根据权重计算对误差负责多大的责任。我们做的第一步就是看对误差负多大的责任。

如图所示,我们看一个学习考试的例子。例如,期末考试的综合成绩由作业和期末考试两个因子计算得出,这里作业因子、期末考试因子理解为TensorFlow的控制台示意图中最后一个隐藏层的第一个神经元、及第二个神经元,期末考试的综合成绩是输出层的结果,其中作业占15%,期末考试占30%,如果期末考试记录的实际值是100分,期末考试的预测值是60分,误差值是100分减去60分为40分。那么,每个神经元要对这个40分的误差负多大的责任?2个神经元分别对40分误差负15%、30%的责任,计算每个神经元的负责分别为40 * 15% =6,40*30% =12,即最后一个隐藏层的第一个神经元对40分要负责6分,最后一个隐藏层的第二个神经元对40分要负责12分,这是对神经网络最重要的理解。然后怎么调整这个权重,这是求导的过程。计算误差这是第一步,误差代表变化,知道误差以后,然后对误差进行求导,求导以后调整权重。

www.zeeklog.com  - (21)心有猛虎,细嗅蔷薇之Backward Propagation


图 1- 33误差示意图

总结一下:

  • 第一个步骤,计算误差。从后往前推,这里计算隐藏层第三层的2个神经元对结果误差负责的程度,然后计算隐藏层第二层的4个神经元对第三层的2个神经元负责的程度,然后再往前推,依次往前推......., 最后一个结果就像一棵树往前推,每个神经元对误差的结果分别负责,这是整个神经网络的Back Propagation的第一个步骤。注意,千万不要改变输入数据x1,x2的值。 如果改变了输入数据x1,x2,这一切都没什么意义了,输入数据不能改变。


  • 第二步是梯度下降计算的过程。刚才第一步只是从后往前遍历一遍,看谁对这个结果进行多大程度的负责(数量)。第二步是在负责中你的改变率是多少,是指改变率,而不是指数量,这个是梯度下降的过程,也是求导的过程。

这个过程就是从经验中进行反思,大脑的神经元进行了某种处理,第一是看不同的元素负多大的责任,然后根据变化率梯度求导将责任变得越来越小,最后所有的神经元对结果负的责任变的越来越小的时候,误差就越来越小,如隐藏层第三层的2个神经元对结果计算没有误差,那这2个神经元就没有责任。

如图1-26所示,这个过程就像一天做事情的时候很忙碌,但在一天结束的时候要回顾一下过去,改进一下学习一些东西,为明天的改进做准备,就如:心有猛虎,细嗅蔷薇(In me the tiger sniffs the rose),又如图1-27所示,一阴一阳的过程,形成一个永恒的循环,最初的起点就是原始的误差状态,然后到达一个不可到达的终点,因为要达到完全准确、绝对100%的精确度不大可能,就像TensorFlow的控制台示意图中的训练数据已经没问题了,但测试数据还是有错的,其中的原因就是数据规模的问题,即使Google公司也不可能获得全部的数据,只能获取越来越多的数据,所以,ForwardPropagation 就像猛虎捕获猎物的过程,然后猛虎思考过去细嗅蔷薇的过程就是BackwardPropagation,然后进行循环,进行下一次的阴阳互动,是一个无限循环(Infinite Loop)的过程。

www.zeeklog.com  - (21)心有猛虎,细嗅蔷薇之Backward Propagation

图 1- 34心有猛虎细嗅蔷薇

www.zeeklog.com  - (21)心有猛虎,细嗅蔷薇之Backward Propagation


图 1- 35一阴一阳 Infinite Loop

循环多少次,就是Epoch的过程。在TensorFlow的控制台中,再次恢复到初始状态,只要不按暂停,如果我们的机器是正常的,Google TensorFlow提供的playground的后台是正常的,就进入了一个Infinite Loop无限循环的过程,背后在不断的进行循环,不断的进行改进……,这里Epoch 无法达到这个精度,因为TensorFlow的控制台里面可能有100万条数据进行训练。

Read more

科普文:软件架构Nginx系列之【万字详解Nginx功能模块功能、应用场景、实操配置】

科普文:软件架构Nginx系列之【万字详解Nginx功能模块功能、应用场景、实操配置】

Nginx模块分类 Nginx是高度模块化的,他的模块分为核心模块,标准模块,和第三方模块。如上图所示。 其中标准模块又分为三类: * HTTP module (web模块) * Standard HTTP Module (标准模块) * Optional HTTP Module (可选模块) * Mail Module (邮箱模块) * Stream Module (四层代理相关的模块) nginx早期版本是不支持模块装卸载的,后来才支持,也仅是比较重量级的模块支持,这些模块跟核心,标准,第三方模块没有关系,跟模块开发本身是否应用了动态装卸载接口有关。 通过命令 nginx -V 查看 nginx已经安装的模块! 核心模块 :是nginx 服务器正常运行必不可少的模块,提供错误日志记录、配置文件解析、事件驱动 机制、进程管理等核心功能 标准HTTP模块 :提供 HTTP 协议解析相关的功能,如:端口配置、

By Ne0inhk
科普文:软件架构Nginx系列之【万字详解Nginx+Lua实现Web 应用防火墙WAF】

科普文:软件架构Nginx系列之【万字详解Nginx+Lua实现Web 应用防火墙WAF】

一、WAF产生的背景 过去企业通常会采用防火墙,作为安全保障的第一道防线;当时的防火墙只是在第三层(网络层)有效的阻断一些数据包;而随着web应用的功能越来越丰富的时候,Web服务器因为其强大的计算能力,处理性能,蕴含较高的价值,成为主要的被攻击目标(第七层应用层)。而传统防火墙在阻止利用应用程序漏洞进行的攻击方面,却没有办法;在此背景下,WAF(Web Application Firewall)应运而生。 二、什么是WAF Web 应用防火墙 (WAF-Web Application Firewall) 旨在保护 Web 应用免受各类应用层攻击,例如跨站点脚本 (XSS)、SQL 注入,以及 cookie 中毒等。应用是您重要数据的网关,因此针对应用发起的攻击就成为了造成漏洞的主要原因。有了 WAF 就可以拦截一系列企图通过入侵系统来泄漏数据的攻击。 三、工作原理 1.用户通过浏览器向Web服务器发送网页请求。 2.用户的请求到达Web服务器之前,WAF对用户的请求进行过滤

By Ne0inhk
科普文:软件架构Nginx系列之【Nginx 配置 ModSecurity 网络应用防火墙】

科普文:软件架构Nginx系列之【Nginx 配置 ModSecurity 网络应用防火墙】

概叙 网络应用防火墙(WAF)是一种在应用层监控网络流量的应用程序。 是最常被网络相关讨论引用的网络流量框架之一。当数据包通过第 6 层(表示层)移动到第 7 层(应用层)时,它会进行解密或解码操作。这些操作可能会因异常解码和解释而产生漏洞,而这些漏洞可能被利用来打破标准应用上下文。注入就是这种漏洞的一种类型,而且因为传统的  设备无法应对这些威胁,所以其长时间以来一直是人们特别关注的问题。 ModSecurity 简介 本质上就是 网络应用防火墙web application firewall(WAF)引擎。它与 Apache、IIS 和 Nginx 兼容,并由第三方公司维护。该防火墙会将一份规则列表与由 Web 服务器/代理提供的 HTTP 头流进行交叉引用。目前这个仓库已经被简化,只包含主要的 LibModSecurity 库。你可以直接在自己的服务器实现中调用这个库,或通过特定编程语言的封装进行调用。 其母公司的支持计划于 2024

By Ne0inhk
科普文:软件架构Nginx系列之【Nginx web应用防火墙ModSecurity介绍】

科普文:软件架构Nginx系列之【Nginx web应用防火墙ModSecurity介绍】

ModSecurity 简介 官网: 中文手册: 使用教程: ModSecurity是一个入侵侦测与防护引擎,它主要是用于Web 应用程序,所以也被称为Web应用程序防火墙。 它可以作为Apache Web服务器的模块或是单独的应用程序来运作。ModSecurity的功能是增强Web application的安全性和保护Web application以避免遭受来自已知与未知的攻击。 ModSecurity计划是从2002年开始,后来由Breach Security Inc.收购,但Breach Security Inc.允诺ModSecurity仍旧为open source,并开放源代码给大家使用。 最新版的ModSecurity(一个开源的web应用防火墙,即WAF)开始支持核心规则集(Core Rule Set,即CRS,可用于定义旨在保护Web应用免受零日及其他安全攻击的规则)了。 ModSecurity团队发布的2.5.10 版还包含了其他一些特性,如并行文本匹配、Geo IP解析和信用卡号检测等,同时还支持内容注入、自动化的规则更新和脚本等内容。 可以通过Mo

By Ne0inhk