机器学习---神经网络基础

简介: 机器学习---神经网络基础

基本介绍


神经网络最基本的成分是神经元模型,当输入值超过了神经元的阈值,神经元就被激活了。然后通过激活函数就可以将输出值对应为0或者1。


感知机


感知机是由两层神经元组成,输入层接收数据,输出层经过激活函数可以输出0或者1,所以感知机能实现一些基本的逻辑运算,下面来看看其中的数学原理。


感知机的数学原理


image.png


x是输入,w是权重,b是偏差(偏置项)


数学原理很简单,那开始实现一些基本的逻辑运算


  • 与运算
  • 或运算
  • 非运算
  • 异或运算


1.与运算


x1 x2 x1 AND X2
0 0 0
0 1 0
1 0 0
1 1 1


对应的不等式为:

b<0

w2+b<0

w1+b<0

w1+w2+b>=0

综上:只要权重满足w1,w2<-b,w1+w2>-b就可以实现与运算;


# 1.与运算
import numpy as np
def AND(x1,x2):
    x=np.array([x1,x2])
    w=np.array([1,1])
    b=-1.5
    y=np.sum(x*w)+b
    if(y>=0):
        return 1
    elif(y<0):
        return 0
print(AND(1,1))
print(AND(0,1))
print(AND(1,0))
print(AND(0,0))


image.png

2.或运算


x1 x2 x1 OR X2
0 0 0
0 1 1
1 0 1
1 1 1


对应的不等式为:OR

b<0

w2+b>=0

w1+b>=0

w1+w2+b>=0

综上:只要权重满足w1,w2>=-b就可以实现与运算;


def OR(x1,x2):
    x=np.array([x1,x2])
    w=np.array([1,1])
    b=-0.5
    y=np.sum(x*w)+b
    if(y>=0):
        return 1
    elif(y<0):
        return 0
print(OR(1,1))
print(OR(0,1))
print(OR(1,0))
print(OR(0,0))


image.png


3.非运算


x NOT x
0 1
1 0


对应的不等式为:

b>=0

w+b<0

综上:只要权重满足w<-b,b>=0就可以实现非运算;


def NOT(x):
    x=np.array([x])
    w=np.array([-1])
    b=0.5
    y=np.sum(x*w)+b
    if(y>=0):
        return 1
    elif(y<0):
        return 0
print(NOT(1))
print(NOT(0))
复制代码


image.png

4.异或运算


x1 x2 x1 XOR X2
0 0 0
0 1 1
1 0 1
1 1 0


对应的不等式为:

b<0

w2+b>=0

x1+b>=0

w1+w2+b<0

这个不等式无解,所以这就是单层感知机的弊端,不能进行异或运算。所以这个时候就要用多层感知机去解决这个问题了


#用多层感知机来解决这个问题
def XOR(x1,x2):
    a=NOT(x1)
    b=NOT(x2)
    X1=AND(a,x2)
    X2=AND(x1,b)
    Y=OR(X1,X2)
    print(Y)
XOR(0,0)    
XOR(1,1)
XOR(0,1)
XOR(1,0)
复制代码


image.png


通过这几个例子我们就知道了单层感知机只能解决线性可分问题,对于非线性可分问题的求解还得通过多层感知机(神经网络)。


对于神经网络的训练


需要训练多层网络,就需要更强大的学习算法---BP算法(反向传播算法) 对训练集假设神经网络的输出为y^jk=f(βj−θj)\hat{y}_{j}^{k}=f(\beta_j-\theta_j)y^jk=f(βjθj)则均方误差为:Ek=12∑j=1l(y^jk−yjk)2E_k=\frac{1}{2}\sum_{j=1}^{l}(\hat{y}_j^k-y_j^k)^2Ek=21j=1l(y^jkyjk)2BP算法还是基于梯度下降的算法,以负梯度方向进行调参,目标是将训练集上的累计误差E=1m∑k=1mEkE=\frac{1}{m}\sum_{k=1}^mE_kE=m1k=1mEk最小化。 基本的步骤就是计算输出--->计算输出层的梯度项--->计算隐层的梯度项--->然后根据更新公式更新权重和阈值,所以这叫做反向传播算法。对于权重和阈值的更新公式推导等后期深度学习专题再专门讲,这里就简单介绍一下就好


缺点


反向传播往往容易过拟合,通常用“早停”或者“正则化”的策略来防止过拟合。


最后来个实战例子


使用多层感知机对葡萄酒数据集来分析葡萄酒的优劣


import pandas as pd
wine = pd.read_csv('./wine.csv', names = ["Cultivator", "Alchol", "Malic_Acid", "Ash", "Alcalinity_of_Ash", "Magnesium", "Total_phenols", "Falvanoids", "Nonflavanoid_phenols", "Proanthocyanins", "Color_intensity", "Hue", "OD280", "Proline"])
wine.head(10)


image.png


wine.describe().transpose()

image.png

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import classification_report,confusion_matrix
X = wine.drop('Cultivator',axis=1)
y = wine['Cultivator']
X_train, X_test, y_train, y_test = train_test_split(X, y)
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
mlp = MLPClassifier(hidden_layer_sizes=(13,13,13),max_iter=500)
mlp.fit(X_train,y_train)
predictions = mlp.predict(X_test)
print(confusion_matrix(y_test,predictions))
print(classification_report(y_test,predictions))
print(len(mlp.coefs_))
print(mlp.intercepts_)


image.png

shelgi
+关注
目录
打赏
0
0
0
0
16
分享
相关文章
机器学习在网络流量预测中的应用:运维人员的智慧水晶球?
机器学习在网络流量预测中的应用:运维人员的智慧水晶球?
235 19
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
机器学习在网络安全中的防护:智能化的安全屏障
机器学习在网络安全中的防护:智能化的安全屏障
403 15
不靠更复杂的策略,仅凭和大模型训练对齐,零样本零经验单LLM调用,成为网络任务智能体新SOTA
近期研究通过调整网络智能体的观察和动作空间,使其与大型语言模型(LLM)的能力对齐,显著提升了基于LLM的网络智能体性能。AgentOccam智能体在WebArena基准上超越了先前方法,成功率提升26.6个点(+161%)。该研究强调了与LLM训练目标一致的重要性,为网络任务自动化提供了新思路,但也指出其性能受限于LLM能力及任务复杂度。论文链接:https://arxiv.org/abs/2410.13825。
143 12
打破传统:机器学习与神经网络获2024年诺贝尔物理学奖引发的思考
诺贝尔物理学奖首次授予机器学习与神经网络领域,标志该技术在物理学研究中的重要地位。本文探讨了这一决定对物理学研究的深远影响,包括数据分析、理论物理突破及未来科研方向的启示,同时分析了其对学术跨界合作与全球科研产业的影响。
133 4
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
570 1
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
143 7
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
478 6
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问