| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【深度学习基础】神经网络的学习(1) -> 正文阅读 |
|
[人工智能]【深度学习基础】神经网络的学习(1) |
神经网络解决问题时,一般分为两个阶段: 1. 模型训练阶段。模型训练会基于训练集获取最佳的权重和偏置,这也是模型构建、学习的过程。 2. 预测阶段。预测就是根据学习到的最优参数,对测试集或新数据集上的数据进行回归预测或分类,这是模型的使用过程。 本文主要重点在模型的学习过程,也就是最优参数的确定的过程。 人工指定参数 && 特征选择 && 自动提取有效信息在处理手写数字识别的问题中,我们可以采用多种处理方式: 1. 人工指定参数。类似于感知机设计与门、与非门、或门,需要我们根据经验和理论推导尝试、验证参数,才能很好的构造出模型,并且,对复杂的场景,人工确定参数的确效率很低。 2. 特征选择。由人指定核心的特征,使用SIFT、SURF、HOG等算法,提取图像中的有效信息,基于SVN,KNN等算法进行数字识别,这是机器学习的路子。 3. 自动提取有效信息。基于神经网络的学习,可以直接把图像作为输入,无需我们人工指定有效信息,有效特征是什么,让模型自己从数据中学习。 由此看来,神经网络的学习,就是一种从输入数据中自动提取有效信息,构造出最佳参数模型的过程。 训练数据、测试数据什么是训练数据?什么是测试数据?
为什么要划分训练数据和测试数据?
什么是过拟合?
代价函数(损失函数)代价函数是用于在神经网络模型构建的过程中,去判断当前的参数是否更加接近最优,或者偏离了最优的一种衡量工具。常用的损失函数有:均方误差、交叉熵误差。 均方误差?均方误差的公式如上,它的计算就是,对预测值和真实值直接的差的平方求和再乘以1/2.均方误差越小,参数越接近最优值。 例如在手写数字识别中,输出是10个值:
那么代价的计算为: ?代码实现更加简单:
这里采用的是预测值与真实值差的平方,为何要进行平方计算呢?直接作差不行吗?
交叉熵误差交叉熵误差也常用于计算损失函数, ?取的是真实值与预测值的对数乘积求和的相反数,误差越小,参数越精准。 以手写数字识别为例:
其代价计算为: ?我们发现,只有标签为1的一项起到作用。 代码实现:
为了避免溢出,这里在计算对数值时,加上了一个很小的数。 mini-batch在实际的训练过程中,我们需要计算训练样本的整体的误差,而不仅仅是单个样本的误差,以交叉熵误差函数为例,实际的误差计算应该是: ?无非是对每个样本的误差求和,再求平均值。 但是如果训练集很大,对每个样本进行训练会很繁琐,一般会抽取一部分数据进行学习和验证计算: 1. 加载数据
我们发现训练数据有60000条 2. 抽取训练数据
对于上面的交叉熵的计算实现,仅仅针对单个样本的损失进行计算,下面改造一下,可以适用于多个样本:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:43:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |