神经网络从入门到出家 [1] 神经元模型

姓名:刘强
【嵌牛导读】
神经元,是神经网络中最基本的元素,本文介绍了神经元的数学模型,并且附上了该模型的python实现
【嵌牛鼻子】
神经网络 神经元模型 Sigmoid函数
【嵌牛提问】
神经网络是怎样一回事?
【嵌牛正文】
国庆长假,眼看着身边的同学们都在忙于探索西安的名胜古迹,然而我的心中毫无波动,毕竟学习使我快乐(手动滑稽)。


近年来,人工智能技术开始流行,尤其是Google的阿尔法狗打败李世石之后,神经网络更是火的不行。作为新时代的五好青年,自然要跟上时代潮流。此篇作为《神经网络从入门到出家》系列笔记的第一篇,虽然简书不能支持LaTeX公式书写让我略感蛋疼,但是确实给了我这个卧病多年的懒癌患者一个契机,希望可以坚持完成这个系列,从而养成写博客的好习惯。

神经元模型

首先看一下生物的神经元


生物神经元

可以看到,生物的神经元主要包括3个部分:细胞体、树突、轴突。神经元的树突接收来自其它神经元的信息,然后将经自己处理后的信息通过树突传递给其它神经元。
类似地,建立神经元的数学模型:


神经元模型

上图神经元模型中,x1,x2,...,xn是神经元的输入,代表来自其它神经元的刺激,这里的输出y称为激活函数,有的书上称之为阈值函数。树突上不同的刺激有着不同的权重,这些刺激在神经元上加权叠加,当总的刺激值超过阈值theta(简书的Markdown竟然不支持LaTeX公式书写,差评) ,则输出y=1;如果未超过阈值,则输出y=0,如下图
激活函数

容易想到,理想的激活函数f应该是阶跃函数,它能够把各种形式的输入映射成0或1,用“1”来表示神经元兴奋,用“0”来表示神经元抑制。但是阶跃函数有很多不好的特性,比如不连续,这样就没法对它求导(后面再解释为什么要对它求导),所以实际常用的激活函数是Sigmoid函数。

阈值函数

Sigmoid函数

Sigmoid函数是一个在生物学中常见的S型的函数,也称为S型生长曲线。我隐约还记得第一次看到这个函数还是在高中生物课本上,是说在一个培养皿上的细菌数目随时间的变化是一个S型生长曲线,于是特意百度了一下,百度百科里对它的解释是这样的:
当种群在有限资源里生长,其生长符合logistic微分方程,随时间变化的生长曲线就呈S形状。在数学上,它是logistic微分方程的解析解。
可以发现,神经网络的建模借鉴了大量生物学的相关概念,不知这算不算是某种朴素的唯物辩证法思想。

Sigmoid函数由下列公式定义

它的图像是这样:

Sigmoid函数

容易看出,当横坐标x趋于正无穷时,Sigmoid函数值为1,当x趋于负无穷时,Sigmoid函数值为0。值得一提的是,除了能把输入映射到0~1之间,sigmoid函数还有一个很好的特性——它的导数可以用自身表示:



这样我们就能够化求导运算为四则运算,从而大大提高程序性能,毕竟计算机擅长的是加减乘除,不善于求导。

代码实现

这个神经元模型的代码实现非常简单:

# 神经元模型
import numpy as np
# sigmoid函数
def sigmoid(x):
    return 1/(1+np.exp(-x))

def neural(x, w, theta):
    z = np.dot(w, x)-theta
    return sigmoid(z)

唯一需要注意的是我们应尽量避免使用显式for循环,例如计算加权累加的时候,诸如

def sum(x, w, n):
    sum = 0
    for i in range(n):
        sum += x[i]*w[i]
    return sum

这样的写法尽管可以完成任务,但是它的时间复杂度是O(n),因为这里用了一个显式的for循环。更好的做法是把x,w看成向量,使用numpy的内置函数dot计算向量的內积,这样计算会显著提高运算速度,这是因为numpy会调用CPU或GPU中的并行化指令,有时也叫做SIMD(single instruction multiple data,单指令流多数据流)指令,这样可以充分发挥CPU或GPU的性能。向量化在神经网络编程中是一个很重要的操作,因为神经网络通过训练不断优化自身,训练用的数据集越大,学习的效果越好,那么,程序的性能就显得尤其重要。

后话

显然,这个神经元模型描述的是一个二分分类器,它可以用于回答一些Yes or No的问题,比如,这个国庆到底要不要出去玩?


下一篇,我将介绍一个浅层的神经网络,并将其用于logistic回归,敬请期待。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容