! ~& X6 ^9 ^$ H! M6 C6 ]好奇心超强的产品经理有了新的疑惑,什么是神经网络?神经网络是如何解决验证码识别问题的?
4 N& H) |& P$ b; P, G/ w. \4 e带着这两个问题,产品经理找到算法 工程师请教,算法工程师听完产品经理的问题,说我们先来了解神经网络是是如何解决验证码识别的问题,再理解神经网络是如何识别数字图片之后,你就可以尝试给出神经网络的定义。 . e- [& A% \$ B' ?4 M- e
先看下面这几张用12个灰黑、灰白方块组成的图:
$ b# p3 ^! n/ G9 b( a % v$ I. c- l/ H& N
神经网络是如何解决验证码识别问题的?(2)
- B$ @' l5 @' E3 R" l. c
* R# [% |9 b- n& H5 q5 i% ]& V; x) |
算法工程师:这些图片看上去是哪个数字呢? 产品经理:都是数字0呀。 算法工程师:那还会不会有其他的表现形式呢? 产品经理:还有很多的,比如下面这几张图都可以表示数字0。 & Q- O; v& e. k0 u1 X0 Y
S9 ^0 a, u9 O* ?: s' Z
神经网络是如何解决验证码识别问题的?(2)
n3 s' n( \1 ~$ u/ K
- a7 @2 T" A- k1 R( W
此时站在旁边偷听的开发人员说道其实还会有很多其他组合模式,很难穷尽,这只是 12 个黑白方块,如果不只 12 个呢,怎么办,传统编程根本解决不了这个问题。
' q% I! u' p* [. M3 A4 `此时算法工程师说道,是的,传统编程根本解决不了这个问题,是因为答案不标准。每个方块,我们都可以理解成是一个像素,而由 12 个二值像素组成的数字0,其组合模式也是多种多样的,远远不只我们列出的这 8 种。对于这种没有标准答案,识别困难的问题,基于神经网络的深度学习技术是可以解决的。
# { D; [# G5 E0 W! ?6 V
下面我们就通过一个三层的组织架构图来讲解神经网络是如何识别出数字 0 和 1 的。
) S" e. p/ _/ _6 b6 x; T5 f x7 R先看理解神经网络这幅图: 3 f- C: f3 s4 f4 Z. L. A6 E. c
神经网络是如何解决验证码识别问题的?(2)
8 A: I z7 q; _$ L. J! u. E/ s0 g
3 X) j: R O8 v) a& Q$ N' l2 S
这张图箭头很多,是不是看起来很复杂?不要担心,接下来我为你一一拆解。
0 v* t! r5 ~2 e& O6 N+ F
首先,我们先大致了解下整体的架构,分别是输出层、隐藏层和输入层。在图中所示的组织架构中,输入层(最下层)有 12 个员工,他们分别代别代表数字 0 或 1 的 12 个黑白方块,即 12 个黑白像素,黑色代表信息强,白色代表信息弱。隐藏层有 A、B、C 三位中层领导,输出层有 0 号和 1 号两位大领导。 5 S: R6 B% ~# g! Q
输入层的 12 个员工就是负责把自身像素是什么颜色汇报给隐藏层的中层领导(神经元)A、B、C。隐藏层的领导获得了 12 个员工是什么颜色的信息之后,进行整合,再把整合结果向输出层两个领导(神经元)汇报,由输出层 0、1 两个大领导来判断数字究竟是“0”还是“1”。 0 Q7 ~6 H$ H/ g G
现在的关键是隐藏层领导是如何进行整合,这对于输出层领导做决策是决定性的。
5 r$ W" E% } u6 v X/ O隐藏层的领导究竟是如何进行整合的呢?仔细来研究下,发现隐藏层领导 A、B、C 有不同的喜好,他们分别喜欢下图所示的模式 A、模式 B、模式 C 的图案。
神经网络是如何解决验证码识别问题的?(2)
9 P- c9 d; l& B( O2 y/ Y
. M; ]: \* l$ R/ o* J8 _
最上层的两个输出层大领导,也是从下层的三个隐藏层 A B C 领导那里得到信息,并对信息进行整合的。如果输出层 0 号领导整合后的信息比 1 号领导整合后的信息值大的话呢,就判定数字为 0,反之就判定数字为 1,具体如下图所示: + a- g+ U% n `5 \. e
神经网络是如何解决验证码识别问题的?(2)
0 _4 `5 w0 C; B* x3 p, K2 o" u! {# c V
隐藏层领导 A、B、C 对模式有各自的偏好,和 12 个手下员工有不同的交情。领导 A 的偏好是之前的模式 A,因此和 4 号还有 7 号关系好,因为模式 A 的 4 号像素与 7 号像素是黑色。中层领导的各自偏好见下图: 4 O% j# z0 |/ w0 X+ M! { [
神经网络是如何解决验证码识别问题的?(2)
4 W& c2 j9 g2 D3 C/ D* A9 P' q, o a3 @8 w% c
隐藏层领导 A、B、C 和输出层的领导也有着人际关系,由于某种关系输出层 0 号领导和隐藏层领导 A、C 关系较好,输出层 1 号领导与隐藏层 B 领导关系较好。
+ \- [# x/ `5 n* y. R3 e2 y2 D注意图中白色粗线代表关系好。 4 U( F. Z: G& D& E6 E
( S6 n+ a0 e u3 V3 Z% W. d
神经网络是如何解决验证码识别问题的?(2)
" @5 X, ?- c5 e6 u: y" j
在把三个层次之间的关系说明白以后,我们来试着使用这个组织架构(神经网络)读入如图所示的数字 0,看看会产生什么反应呢? ; l+ M( E& M& d0 g9 m
神经网络是如何解决验证码识别问题的?(2)
! U: x" Q4 S3 Y* {2 a9 q6 z f
: [6 F- \% \- A" |; c" a
变黑的 4 号和 7 号员工向性情相投的隐藏层领导 A 传递了较强的信息。变黑的 6 号、9 号员工也向性情相投的隐藏层领导 C 传递了较强的信息。由于 5 号、8 号员工的颜色没有变黑,所以隐藏层领导 B 是没有得到较强的信息,这就直接导致了如图所示的结果。
1 E) \7 P& e0 w
神经网络是如何解决验证码识别问题的?(2)
8 r6 [1 F2 u- M. D
; W6 ~5 v* e' \ C$ F6 I& U% S. `4 D
隐藏层领导 A、B、C 对接收到的信息进行整合之后向输出层领导汇报,输出层 0 号领导和 1 号领导根据关系好坏程度分别对信息整合,最后 0 号领导得到的信息值很强,而1号领导得到信息值较弱,所以判断数字为0,具体过程如图所示。 , f& l$ d1 H3 O+ Y& N" P
神经网络是如何解决验证码识别问题的?(2)
5 p7 N9 B. J8 @, ~
9 X, c6 w# r* w6 }
到此领导的神经网络终于推导出正确答案了。
2 o+ }& q: x1 {, U* E* N) @9 S5 t 神经网络的通俗定义和概念理解
8 J- [) ]5 Q, |* v2 }+ j' a
产品经理听完了算法工程师这段讲解之后,说道原来神经网络就是职场呀。 . r* h. c: z: m! N c8 S
开发人员听到这个定义之后不禁朝产品经理竖起了大拇指,这定义也太精辟了。 / ]( D. a* X8 k m
算法工程师说到初学者入门阶段给神经网络下个通俗定义是可以的,但是,神经网络是仿生人脑神经网络工作机理(如下图)构建而成,并且在数学上有严谨的定义,比如关系好如何定义、隐藏层领导何时决定向上层传递信息,是由隐藏层领导根据自已实际情况来判断是否还需要把信息向上层汇报,而这个判断如何来定义,只有从数学上给出定义,才能在理论上立住脚。
7 _" s8 J& v$ g8 V
神经网络是如何解决验证码识别问题的?(2)
0 w& n3 ^& O+ n/ H: I
7 a9 O+ Q$ n) B. L- t
总结下本节课所学到的知识: 3 A! t W1 K r9 o- V+ s' M
1)通过一张架构图,以职场人际关系为例,讲解了神经网络是如何识别数字验证码。 : A* j. d1 I; x
4 @- {& [( B( n# b
神经网络是如何解决验证码识别问题的?(2)
- `" l/ k7 |/ P% b3 v
- X/ L" |/ ^: A
2)通俗定义了神经网络——神经网络即职场。 到此,给同学们留下三个作业: 1)请使用本章给出的领导神经网络,画出如下图数字1的识别过程? 2)结合本节课知识自己给神经网络下个定义。 3)如果识别多个数字,隐藏层领导、输出层的人数到底如何确定呢? 最后给看完本文的童鞋点赞,如果你还想继续了解神经网络的相关数学定义,欢迎阅读下篇文章《神经元如何组成神经网络》。 + S. G$ Z+ g' e0 g3 J4 x3 x
+ a, L- U9 }1 \. Z
|