About ANNs’s simple conceptions (Learning)

本文介绍了神经网络的基础概念,包括神经元的工作原理、训练过程和前向传播。讨论了激活函数的作用,以及如何通过反向传播和损失函数优化参数。强调了神经网络在数据处理和应用项目中的重要性。
摘要由CSDN通过智能技术生成

##为了application项目概念的一个实现途径以及未来可能应对的数据处理接触学习神经网络。
一、神经网络。
浮现的第一想法是轴突树突细胞体安在机器上,这很人工智能。)

FROM WIKI>神经细胞可以视为有两种状态的机器,激活时为“是”,不激活时为“否”。神经细胞的状态取决于从其他神经细胞接收到的信号量,以及突触的性质(抑制或加强)。当信号量超过某个阈值(Threshold )时,细胞体就会被激活,产生电脉冲。电脉冲沿着轴突并通过突触传递到其它神经元。

神经网络简单组成神经网络的理解过程:
神经网络是分为“训练”和“使用”两个步骤的。
给数据——>筛选分类——>学习共同点——>应用于样本
类似于一个映射函数f(X)=Y
拥有训练集输入X,输出Y。目的:神经网络的过程f()能够使f(X)与Y尽可能接近
前向传播过程:层层传递
1.简化的两层神经网络分析
理论上两层神经网络已经可以拟合任意函数
输入层——从输入层到隐藏层——从隐藏层到输出层——分析
一系列线性方程的运算最终都可以用一个线性方程表示。
对网络注入灵魂:激活层。
2.激活层对于用于“训练”的网络,远远不够。当前的输出Y,还不够令人满意。
3.输出需要一些正规化
4.判断好坏,衡量指标的选择
exp:常用的是Softmax层(求对数的负数是一种巧妙的方法)
概率越接近100%,该计算结果值越接近于0,说明结果越准确,该输出叫做“交叉熵损失(Cross Entropy Error
训练神经网络的目的,就是尽可能地减少“交叉熵损失”。换成其他训练函数也是同理为了减少损失。
5.反向传播与参数优化
神经网络的传播都是形如Y=aX+b的矩阵运算;为了给矩阵运算加入非线性,需要在隐藏层中加入激活层;输出层结果需要经过(Softmax层)
6.迭代
神经网络需要反复迭代。处理为概率值,并通过交叉熵损失来量化当前网络的优劣。

BP算法
BP算法的核心思想:使用梯度下降来搜索可能的权向量的假设空间,以找到最佳的拟合样例的权向量。具体而言,即利用损失函数,每次向损失函数负梯度方向移动,直到损失函数取得最小值。
参考:BP算法

 1 #coding:utf-8
  2 import random
  3 import math
  4 
  5 #
  6 #   参数解释:
  7 #   "pd_" :偏导的前缀
  8 #   "d_" :导数的前缀
  9 #   "w_ho" :隐含层到输出层的权重系数索引
 10 #   "w_ih" :输入层到隐含层的权重系数的索引
 11 
 12 class NeuralNetwork:
 13     LEARNING_RATE = 0.5
 14 
 15     def __init__(self, num_inputs, num_hidden, num_outputs, hidden_layer_weights = None, hidden_layer_bias = None, output_layer_weights = None, output_layer_bias = None):
 16         self.num_inputs = num_inputs
 17 
 18         self.hidden_layer = NeuronLayer(num_hidden, hidden_layer_bias)
 19         self.output_layer = NeuronLayer(num_outputs, output_layer_bias)
 20 
 21         self.init_weights_from_inputs_to_hidden_layer_neurons(hidden_layer_weights)
 22         self.init_weights_from_hidden_layer_neurons_to_output_layer_neurons(output_layer_weights)
 23 
 24     def init_weights_from_inputs_to_hidden_layer_neurons(self, hidden_layer_weights):
 25         weight_num = 0
 26         for h in range(len(self.hidden_layer.neurons)):
 27             for i in range(self.num_inputs):
 28                 if not hidden_layer_weights:
 29                     self.hidden_layer.neurons[h].weights.append(random.random())
 30                 else:
 31                     self.hidden_layer.neurons[h].weights.append(hidden_layer_weights[weight_num])
 32                 weight_num += 1
 33 
 34     def init_weights_from_hidden_layer_neurons_to_output_layer_neurons(self, output_layer_weights):
 35         weight_num = 0
 36         for o in range(len(self.output_layer.neurons)):
 37             for h in range(len(self.hidden_layer.neurons)):
 38                 if 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值