向毕业妥协系列之机器学习笔记:构建ML系统(三)

2023-10-22 23:59

本文主要是介绍向毕业妥协系列之机器学习笔记:构建ML系统(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.机器学习开发的迭代

二.误差分析

三.添加更多数据

四.迁移学习

五.机器学习项目的完整周期


一.机器学习开发的迭代

然后我们以识别垃圾电子邮件为例来讲解一下这个过程

如上图,结合英文看,右侧是一封电子邮件,咱们从英语字典里把最常用的10000个单词取出来,然后输入数据就是一个有10000个特征的向量,遍历邮件,出现了哪个单词,单词在x中的对应位置就置为1。另一种方式是不止置为1,而是记录对应的那个单词的出现次数。当然吴佬说置为1效果就很不错。

然后在我们开发的过程中,肯定还会遇到很多问题,需要咱们具体问题具体分析。

二.误差分析

就选择下一步要做什么来而言,偏差和方差的重要性是第一位的,误差分析是第二位的。

错误分析需要咱们手动来实现,如果数量比较多,比如验证集里有5000个训练示例,其中1000个被错误分类了,那么咱们可以从这1000个当中抽样100个来分析。

三.添加更多数据

获取大量的数据可能耗时,昂贵。有一种方法时基于已有的训练数据来新增训练数据,“数据增强”。

比如把带有字母A的图片进行旋转,放大,缩小,扭曲等操作,新生成新的图片,但这仍然代表字母A。

同样的,语音识别也可以应用这种技术,即给真实数据添加一点噪音形成新的数据。当然对现有数据进行修改和添加噪声等不是随意的操作,而是有针对性的,并且要检测的数据相似。

另一种新增数据的方法是“数据合成”。

传统的机器学习模型和现在的侧重点对比:

四.迁移学习

迁移学习可以把别的模型的部分参数直接拿到自己的模型中来用。看一下下面的例子就明白了。

                                                                                                                           注:fine tune:微调

上面的例子场景是现在我们想识别手写数字,但是手写数字的图片却不多,但是猫,狗,车和人的图片(1000个种类,所以最后输出层有1000个神经元,共一百万张图片)却充足,所以上图上面的那个模型是识别猫,狗,车,人等的模型;然后咱们现在要构建手写数字识别的模型,看到上图下面那个模型,也是五层的神经网络,前四层咱们直接把上面的那个模型已经训练好的前四层的参数直接拿过来用,然后现在是识别0~9,所以输出层有10个神经元,现在咱们只需要训练下面的这个模型的输出层的参数即可,前四层就不用训练了(因为直接借用了上面模型的前四层参数)。这时候我们需要的训练集大小就可以很小了,比如50张手写体数字的图片?So magic!

这个我们也有两种选择:

  1. 只训练手写体识别模型的输出层的参数
  2. 训练神经网络中所有的参数

 但是一般项目中是选择第二种方式,这就相当于给神经网络的前四层赋了一些初始值,虽然普通的神经网络训练的时候也会有初始值,但是迁移学习方式的这些初始值是已经经过了训练的初始值(虽然不是一个模型,但是难免还是会有一些共性存在)

现在很多研究者将他们的已经训练好的神经网络发布到网上,咱们只要把自己的输出层替换掉神经网络里的输出层即可,真的很适合迁移学习,极大地提高了我们的构建效率。

为什么迁移学习这么神奇呢?检测猫狗的模型竟然可以应用到手写体数字识别上,请看下面

检测猫狗的模型的前几层的参数已经学会了检测图像的边缘,角点,曲线,基本形状和一些非常通用的图像特征,这对其他很多计算机视觉任务都有用,如手写体数字识别。

 

由上图可知做迁移学习时,迁移过来的模型的输入数据的类型格式什么的要和自己输入的数据类型格式什么的一致才行。

五.机器学习项目的完整周期

下面来介绍一下生产环境下的部署:

这篇关于向毕业妥协系列之机器学习笔记:构建ML系统(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/264415

相关文章

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详