深度学习笔记【1】

深度学习笔记【1】

从零开始的搭建神经网络之路

序言#

鸽了朋友能有两天,终于开始写第一篇博客。也是从今天开始吧,我会定期更新我的关于深度学习的博客,现在由于自己的网站备案还没好,就暂时先更新在这儿了。

本篇是该系列的开头之作,鉴于对深度学习领域真的知之甚少,就找了些前辈的东西来入门。本文主要参考的是Victor Zhou先生的博文,以及我的一位朋友的博文,在此对二位表示感谢,文末我会附上参考博文的链接。

现下我们所言的神经网路,一般都应该称之为人工神经网络或类神经网络,是模仿生物神经网络而来的计算模型。他被用于解决各种很难被传统的基于规则的编程所解决的问题。接下来待我一一讲来。

神经元#

神经元(Neuron)是神经网络的基石,一个神经元需要输入,输出,以及相应的计算.。

在这里插入图片描述

这是一个有两个输入的神经元,每一个输入都经过加权xix_ixi​*wiw_iwi​,然后求和(∑xiwi)+b(\sum x_i w_i )+b(xiwi)+b,最终通过激活函数输出。其中,具体的权值wiw_iwi我们是不知道的,这也是随后的学习算法的主要作用。

在加权求和的过程中,为何要将求和结果与偏置(bias)相加呢?其实是因为在生物神经网络中,神经元需要做够多的电位变化,亦即超过阈值,才会释放动作电位。在人工神经网络中也是如此,只有当你神经元的加权和大于某一阈值时,输出1,反之为0。而为了更好的计算和表达,我们将与阈值与加权和移到同一边,同时给之取名偏置 bias

神经元的python实现如下

class Neuron: #神经元
    def __init__(self, weights, bias):#初始化
        self.weights = weights #权重
        self.bias = bias  #偏置

在这里,没有涉及到计算的部分,此部分会在接下来实现

Activation函数#

这个函数就是用于约束神经元输出的。不知聪明的你有没有发现,我们之前的加权和的结果是无界的,即既可无穷大又可无穷小。所以我们必须将其约束在一个区间中(最终我们可将输出结果视作为概率),为此我们需要一个函数来实现。在这我们选用 sigmoid 函数。
在这里插入图片描述
sigmoid 函数的函数表达式为:

H(x)=11+e−xH(x)={1\over 1+e^{-x}}H(x)=1+ex1

其输出在(0,1)的范围内。
python 实现如下

def sigmoid(x):
	  return 1/(1+np.exp(-x))

至此,我们就可以将神经元的输出函数给写出来。

class Neuron:
	def _init_(self,weights,bias):
		self.weights=weights
		self.bias=bias
	def feedforward(self,inputs):
		total=np.dot(self,weights,inputs)+self.bias
		return sigmoid(total)

神经网络#
接下来我们就要试着搭建一个神经网络了。
比如说我们遇到这样一个问题:

Name Weight(Ib) Height
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值