神经网络体系搭建(一)——神经网络

本篇是神经网络体系搭建的第一篇,解决体系搭建的前四个问题,详见神经网络体系搭建(序)

神经网络

神经网络思维导图

最简单的神经网络

神经网络的定义就不再赘述,直接从最简单的神经网络说起。

将一系列输入数据,通过训练好的网络模型处理,得到输出结果,这是神经网络决策的步骤。那么我们的重点就是通过训练得到网络模型

最简单的神经网络

从上图可以看出,模型的关键其实是寻找合适的权重矩阵

那么如何寻找呢,是一个暴力过程。

给一个初始权重矩阵,用这个矩阵进行预测,看预测结果和实际结果相差多远(损失函数的作用),根据这个相差多远的情况,来更新权重矩阵,直到预测结果和实际结果相差最小(其实就是求损失函数的最小值)的时候为止,带有这个能使预测值与实际结果相差最小的权重矩阵的模型就是我们训练好的网络模型了。

求损失函数最小值的方法通常为梯度下降

组成项

已经知道了权重矩阵、损失函数的位置和作用,还有一个概念没有解释——激活函数。


激活函数

激活函数的作用是给神经元添加非线性因素,说白了就是如果不通过激活函数,输出就是线性函数,y=wx+b,但是wx+b通过激活函数,得到的y就可以是非线性的了。

思维导图中罗列了常用激活函数,优点和使用情况不属于体系的主干系列,因此不再这里赘述,可以参考常用激活函数比较

解决问题的步骤

解决问题的步骤

数学部分

损失函数通常有误差平方和(SSE)、误差平方的均值(MSE)等,也不属于主干,具体的可以参考深度学习中的损失函数总结以及Center Loss函数笔记。找到合适的损失函数是一个可优化点。

梯度下降

有了损失函数,我们的重点是如何找到损失函数的最小值。采用的算法是梯度下降。梯度下降最常见的例子就是下山,从山顶每次找最陡的一条路,达到最快下山的目的,陷阱也就是可能还没有到山脚却以为到了山脚(陷入局部最优而非全局最优)。

那么梯度下降说白了就是找斜率,找斜率就是求导。

单行数据通过单层网络为例:

单行数据通过单层网络的权重更新

如果有多个输出单元:


多个输出单元

代码部分

单条数据

import numpy as np
# 定义激活函数
def sigmoid(x):
    return 1/(1+np.exp(-x))

# 计算激活函数导数
def sigmoid_prime(x):
    return sigmoid(x) * (1 - sigmoid(x))

# 设置输入数据x
x = np.array([x1, x2, x3, x4, x5]) # xi为用来举例的假数据,替换即可
# 设置标签y
y = np.array(y) # y为用来举例的假数据,替换即可
# 设置学习率
learn_rate = 0.5
# 初始化权重矩阵
w = np.array([w1, w2, w3, w4, w5]) #wi为用来举例的假数据,替换即可
# 计算h
h = np.dot(x, w)
# 计算预测值
y_predict  = sigmoid(h)
# 计算误差
error = y - y_predict
# 计算误差项
error_term = error * sigmoid_prime(h)
# 计算权重变化量delta_w
delta_w= learn_rate * error_term * x
# 更新权重矩阵
w += delta_w

多条数据

其实将单条数据的delta_w通过循环更新,最后在累加到权重矩阵中,更新e代就是多条数据的训练。

for e in range(epochs):
    del_w = np.zeros(w.shape)
    for x, y in zip(features.values, targets):
        h = np.dot(x, w)
        y_predict= sigmoid(h)
        
        error = y - y_predict

        error_term = error * sigmoid_prime(h)
        
        del_w += error_term * x
    
    weights += learnrate * del_w / len(x)

问题回答

至此,序中的四个问题已有了答案:

  • 神经网络是什么?解决问题的步骤(算法)是什么?
    见思维导图。
  • 梯度下降用在神经网络的哪一步?
    梯度下降用来找损失函数的最小值,数学原理和代码见上。
  • 损失函数是干什么用的?
    损失函数用来衡量预测值与真实值的差距,有了损失函数,才能指导权重矩阵的更新。
  • 神经网络模型有哪些参数可以调整(优化)?
    选择合适的迭代次数、找合适的学习率、找合适的初始权重矩阵、找合适的激活函数、找合适的损失函数。

以上内容来自822实验室神经网络知识分享
我们的822,我们的青春
欢迎所有热爱知识热爱生活的朋友和822思享实验室一起成长,吃喝玩乐,享受知识。

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