人工神经网络ANN学习笔记(一)

本文详细介绍了人工神经网络的基本概念,以MNIST数据集为例,涵盖了输入层、隐藏层、权重初始化、激活函数(如sigmoid、ReLU和Softmax)、损失函数(平方误差损失)以及模型评估指标(混淆矩阵、准确率、精确率和召回率)。着重讲解了如何使用这些工具进行前向传播和反向传播,以及权重向量的几种初始化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:人工神经网络(Artificial Neural Network),它是人脑神经元网络的抽象,是一种运算模型,由大量的节点(或称神经元)相互联接构成。每个节点代表一种特定的输出函数,称为激活函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

 注:1.样本有多少个feature,输入层就有多少个节点。

2.根据组合的情况来设定权重,权重要进行初始化。

下面以手写体数字识别为例继续学习ANN

数据集简介:MNIST数据集,60000个样本用于学习,10000个样本用于测试,每一个样本都是28*28点阵图,共784个像素点,每个像素点的值从0-255。 每个样本的784个像素点的值就是feature,每个样本的数字就是label。

从输入到输出的过程叫做前向传播(forward propagation),输入层有784个节点,隐藏层根据需要自己设置,每个节点的输入值乘以对应的权重的和送入激活函数,依此类推。输出可以设置一个节点,输出0-9这十个类别;也可以设置十个节点,输出一种概率分布,比如0.8的概率为“0”,0.1的概率是“6”,0.05的概率是“8”……

 

 当输出值和目标值之间有差距时,就定义了一个损失函数(cost function),将损失返回回去,来寻找一个新的权重的组合,再算一遍输出,使其更接近目标值,这个过程就叫做反向传播(back propagation)。

如何初始化权重向量

1.生成半开区间上的均匀分布

##生成1000个从-1到0区间上的均匀分布
import numpy as np

mumber_of_samples = 1000
low = -1
high = 0
s = np.random(low, high, number_of_samples)

2.生成二项式分布

##100次试验,每次成功的概率为0.5
import numpy as np

s = np.random.binomial(100, 0.5, 1000)

3.numpy.random.normal不能指定区间值,引入scipy.stats.truncnorm

import numpy as np

def truncated_normal(mean=0, as=1, low=0, upp=10):
    return truncnorm(
                     (low - mean) / sd, (upp - mean) / ad, loc=mean, scale=sd)

no_of_input_nodes = 3
no_of_hidden_nodes = 4
rad = 1 / np.sqrt (no_of_input_nodes)

X = truncated_normal (mean=2, sd=1, low=-rad, upp=rad)
wih = X.rvs((no_of_hidden_nodes, no_of_input_nodes))

激活函数(activation function)

Z=W^TX+b只能对输入值进行线性处理,引入激活函数就可以进行非线性处理了,这样神经网络就可以应用到众多的非线性模型中。下面是几种激活函数:

1.sigmoid 

可以将变量非线性映射到0,1之间,定义为:

\sigma(x)=\frac{1}{1+e^{-x}}

它的导数可以用其自身来表示:

\sigma^{'}(x)=\sigma(x)(1-\sigma(x))

2.ReLU (Rectified Linear Unit)

y=max(0,x)

3.Softmax

映射区间[0,1],主要用于离散化概率分布

P(y|x)=\frac{e^{h(x,y_{i})}}{\sum_{j=1}^{n}e^{h(x,y_{i})}}

损失函数(以Squared Error Loss为例)

为了优化输出,我们要使用损失函数。设每个节点目标输出为t_k,ANN的实际输出为o_k,则误差e_k=t_k-o_k,下面是推导过程:

 如何评价预测模型

混淆矩阵(Confusion Matrix,cm)

准确率(Accuracy)       精确率(Precision)      召回率(Recall)

predicted
actualnegativepositive
negativeTNFP
positiveFNTP

AC=\frac{TN+TP}{TN+FP+FN+TP}

precision=\frac{TP}{FP+TP}

recall=\frac{TP}{FN+TP}

精确率是对于预测结果而言的,简言之,预测为正的结果里有多少是对的。

召回率是对于原来的样本而言的,简言之,原来为正的样本有多少被预测对了。

准确率是对于全部样本而言的,表示所有的样本有多少被准确地预测了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值