首页 > 其他分享 >神经网络基础

神经网络基础

时间:2024-02-21 09:58:50浏览次数:32  
标签:dim self 基础 感知机 神经网络 前向 神经元

(个人学习所用,内容来源于网络,侵权删)

1. 感知机

感知机由Rosenblatt在1957年提出,是神经网络的基础,该思想受生物学启发(参照下图),

在其看来,人的大脑可以看作一个生物的神经网络,其最小的单元是神经元。人的神经网络由这样的一些神经元组成,它接受一些信号,这些信号可能是眼睛看到的光学信号或者耳朵听到的声学信号,这些信号到树突组织后会产生一些生物电,形成一些刺激,细胞核就对这些刺激信号进行处理,然后通过轴突组织输出处理的结果,传递给其他组织。以上就是人脑的一个神经元进行感知的大致工作原理。

根据上面的原理,一个简单的感知机如下图所示:



2. 多层感知机

多层感知机就是在单个感知机的基础上进行推广,最突出的特点就是拥有多个神经元层,因此也叫深度神经网络,相较于单独的感知机,多层感知机第i层的每个神经元与第i-1层都有连接。

3.神经网络常用模型结构

圆形代表一个神经元,方形代表一组神经元。

上图包含了大部分常用模型结构。

4.前向传播和反向传播
人工神经网络的神经元本质上由权重参数组成, 因此该网络接收输入,通过逐层计算得到输出,这个过程叫做前向传播(forward propagation);神经网络前向传播得到的结果会存在误差,因此需要纠正,纠正的方法就是通过计算梯度更新网络参数,寻找最优解这个过程叫做反向传播。

前向传播

前向传播用数学公式表示就是\(Y=f_n(W_n*(...f_2(W_2*(f_1(W_1*X_1+B_1))+B_2))+B_n)\),其中\(Y\)是输出结果的矩阵,\(n\)是神经网络的层数,\(W\)是神经网络一层的权重矩阵,\(X\)是输入矩阵,函数\(f\)就是激活函数,例如\(ReLu,Sigmoid\)等等。通过这样一层一层嵌套计算,最终得到一个输出层结果。

代码实现如下:

点击查看代码
# * 表示element-wise乘积,· 表示矩阵乘积

class Layer:
    '''中间层类'''
    self.W  # (input_dim, output_dim)
    self.b  # (1, output_dim)
    self.activate(a) = sigmoid(a)/tanh(a)/ReLU(a)/Softmax(a)

    def forward(self, input_data):       # input_data: (1, input_dim)
       '''单个样本的前向传播'''
       input_data · self.W + self.b = a  # a: (1, output_dim)
       h = self.activate(a)              # h: (1, output_dim)
       return h

反向传播

梯度下降法原理

“反向传播算法”过程及公式推导(超直观好懂的Backpropagation)

将神经网络看作一个数学公式,这个数学公式的所有结果组成一个结果空间,我们想要的就是在通过前向传播得到一个输出结果\(Y_p{re}\)之后,这个输出和真实值\(Y_{true}\)之间会存在一个误差,我们想要的就是寻找一个\(Y_pre\),使得与真值之间的误差最小。寻找的方法就是梯度下降法。

如图所示,当结果是\(f(x_1)\)时,其离最小值很远,要到达minimal,需要使用梯度下降法,具体原理如下

实际的神经网络不会是单一的权重参数,而是非常多的权重参数,但原理是相通的,通过求偏微分即可得到每一个权重参数的梯度,继而更新参数。图中的\(\alpha\)代表沿着梯度方向前进的步长,其值过大时可能会使得函数直接跨过最小值。

代码实现如下:

点击查看代码
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt


def f(x):
    return np.power(x, 2)

def d_f_1(x):
    return 2.0 * x

def d_f_2(f, x, delta=1e-4):
    return (f(x+delta) - f(x-delta)) / (2 * delta)


# plot the function
xs = np.arange(-10, 11)
plt.plot(xs, f(xs))
plt.show()

learning_rate = 0.1
max_loop = 30

x_init = 10.0
x = x_init
lr = 0.1
for i in range(max_loop):
    # d_f_x = d_f_1(x)
    d_f_x = d_f_2(f, x)
    x = x - learning_rate * d_f_x
    print(x)

print('initial x =', x_init)
print('arg min f(x) of x =', x)
print('f(x) =', f(x))

标签:dim,self,基础,感知机,神经网络,前向,神经元
From: https://www.cnblogs.com/cqut-zhoutao/p/18023368

相关文章

  • 神经网络优化篇:详解深度学习框架(Deep Learning frameworks)
    深度学习框架一小点作者内心os:24年春节已过完,从熟悉的地方又回到陌生的地方谋生,愿新的一年都得偿所愿,心想事成。学到这会儿会发现,除非应用更复杂的模型,例如卷积神经网络,或者循环神经网络,或者当开始应用很大的模型,否则它就越来越不实用了,至少对大多数人而言,从零开始全部靠自己......
  • [转]多端统一框架Taro基础教程(支持转小程序/React Native(安卓/iOS)/鸿蒙)
    原文地址:多端统一框架Taro基础教程-知乎随着微信小程序越来越火,其它平台也都推出了自己的小程序产品(支付宝、快应用、百度、抖音)。小程序最大的特点就是平台能为你提供强大的流量,所以小程序开发变成了前端必会知识。作为一个从来不想写程序,一心只想泡妹子的程序员,我一直期盼......
  • babel 基础概念 & 从零到一写一个 babel 插件
    babel基础概念简单来说,做语法转换兼容的,复杂一点的说,babel可以将我们写的ES6+的Javascript语法转换为向后兼容的语法,以便能够在旧版本的浏览器或者其他环境运行。babel生成代码的三个阶段解析(parse)输入:源码输出:AST转换(transform)输入:AST输出:AST(此AST非彼AST,是被......
  • 深度学习-卷积神经网络基础2-43
    目录1.池化层2.CNN的一般架构3.经典的LeNet4代码5代码21.池化层为什么要有池化层?目标就是降采样subsample,shrink,减少计算负荷,内存使用,参数数量(也可防止过拟合)正如卷积神经网络一样,在池化层中的每个神经元被连接到上面一层输出的神经元,只对应一小块感受野的区域。我们必......
  • Java基础01:注释
    1.注释:1.1.平时编写代码,在代码量比较少的时候,还可以看懂自己写的,但是当项目结构一旦复杂,就需要用到注释1.2.注释不会被执行,是给写代码的人看的1.3.养成注释的好习惯2.java中的注释有三种:2.1单行注释2.2多行注释2.3文档注释1.创建一个......
  • ControNet基础学习
    1.使用背景AI绘画虽然能够利用图生图的方式,生成类似图片风格特征的一种新图片,但是,大体上还是无法精准控制整体图片的细节特征,如果用于自娱自乐的倒也可以,但是在更专业的场景上,精准控制出图成为了AI绘画的一个重大难题。2.基础原理在控制原理上ControNet和LoRA是有很多相似的......
  • 热辣滚烫,Salesforce开发入门指南:零基础学习宝典!
    开发人员将Salesforce组织扩展到声明式配置之外,构建应用程序,进而优化业务运营。Salesforce开发人员通常会使用两种编程语言:Apex和JavaScript。然而,Salesforce开发不仅仅只包括代码。为了在职业道路上脱颖而出,开发人员还需要了解声明性功能,将组织的设计和性能保持最佳状态。Sal......
  • 2024牛客寒假算法基础集训营4
    A.直接计算#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;#defineinf0x3f3f3f3fvoidsolve(){inta,b,k;cin>>a>>b>>k;if(a>=k*b)cout<<"good";elsecout<&l......
  • 零基础搭建chatgpt商业网站,上线即可运营,集合midjourney
    在当前AI技术迅猛发展的背景下,普通人也有机会通过搭建chatgpt镜像网站盈利。AI系统“松鼠AI”便是这样一款集成了多项功能的系统。通过简单的部署,即可获得包括chatgpt、midjourney、gpt绘画、语音交互、自动生成思维导图和PPT等超过20项核心功能的强大平台。下面简单教学,帮助大......
  • 零基础教你搭建自己的chatgpt,结合midjourney,部署源码上线即可运营
    人工智能日益发展的今天,拥有一套属于自己的ai系统已经不再是遥不可及的梦想。松鼠AI汇集了chatgpt、midjourney、gpt绘画和gpt语音等众多功能,使得它拥有了包括思维导图生成、PPT自动创作、多样化的登录选项以及个性化分销机制在内的过二十种高级功能。下面介绍如何从零开始,搭建......