细说机器学习和深度学习

在这里插入图片描述

背景

平常业务开发中每天都要接触到机器学习和深度学习的概念,在听了很多大佬的普及后,发现甚是有趣。于是小编想着着手开始学习这部分的内容。

那废话不多说,就从最基础的机器学习和神经网络开始~

一、机器学习基础

1、机器学习是什么?

机器学习是对能通过经验自动改进的计算机算法的研究 —— 可以理解为机器学习是一个研究,它的研究对象是计算机算法。这个计算机算法的特点是:能通过经验来自动改进自身的能力。也就意味着,它可以像人一样积累一些经验,然后自动改进。

机器学习是用数据或以往的经验,以此优化计算机程序的性能标准 —— 强调了数据或以往的经验。比如说:拿线性回归来举例,如下图所示:

线性回归的意思指的就是你给我一个连续的输入,比如说图上的 x 轴,它从 050,然后我可以给你映射到它对应的 y 轴上的值分别是多少,也就是会给你一个连续的输出,我们可以在图上看到这个 y 轴从 035 也是一个连续的输出。

那么这个线性回归跟机器学习有什么关系呢?如我们上面所说的,这个线性回归问题通过数据或以往的经验来解决。比如说我们这个图里面有很多黄色的点,那么我们就可以沿着这些黄色的点,根据它的分布来画一条黄色的线,画完之后你随便给我一个 x 轴上的值,我都可以找到与之对应的 y 轴上的值。

比如说图上的 x20 的时候,那么它的 y 大概就在 5- 10 之间这个位置,且就是你给我任意一个 x 轴上的值,我都可以得到 y 轴对应的值。当然不只是刚才那个20,其他值也都可以。这就是通过数据以及以往的经验来解决线性回归问题,这些黄色的点就是数据或者说是以往的经验。

还有个问题是,可能有的小伙伴会有疑问:不使用机器学习,我也能画出这条黄线 or 红线。既然自己可以做到了,那为什么还需要机器学习呢?

其实啊,我们的目的就是为了实现人工智能,就是想办法让机器来代替人去画这两条线。

2、机器学习应用场景

上面我们说了机器学习的基础概念,接下来再列举一些常见的应用场景:

  • 图片分类 —— 准备大量图片,让机器去学习,判断这是一只猫、还是一只狗。

  • 语音助手 —— siri、小爱同学等等,给机器足够多的声音数据以及对应的标签,那么机器就可以识别我们的语音在讲什么了。

3、为何要用机器学习?

有些棘手问题只能用机器学习来解决:

  • 比如说给我一张图片,让我判断这个图片里有没有一只猫。这个问题看似简单,但是即便是很聪明的程序员,也没有办法通过编写规则和编写代码的方法来解决这个问题,这是不可能的。
  • 比如说先是编写了一堆规则,然后判断一只猫,判断一个图片里面有没有一只猫。但是我们想一下,如果这个猫随便换个位置,换个动作,换个颜色,换个品种,那么它的规则是不是就被废弃掉了,就没用了?它要写多少条规则?它要写无数份规则,无数行代码,这显然是不可能解决的。
  • 因此,我们可以通过机器,来学大量猫🐱的图片。之后,机器就大概知道了猫的特征是什么样的。然后等下次你再给它一张新的猫的图片,它就能判断这张图片里有一只猫的概率有多大了。

获取数据比编写规则更加容易:

  • 有些问题它既可以用机器学习来解决,也可以通过编写规则就是编写程序来解决。但是如果获取数据比获取规则更加容易的话,那么这时候就应该用机器学习来解决。
  • 举个例子,比如说你写了一个翻译程序,可以把这个英文翻译成中文,但第二天PM跟你说,想让你把这个翻译程序拓展一下,可以把英文翻译成日语。
  • 如果是通过传统的编程,就会编写一堆的规则,一堆的 if else 逻辑。很大概率所有代码你还要全部再重写一遍,工作量非常大。
  • 但是如果是通过机器学习的手段来做这个翻译程序的话,那么你一行代码都不需要改。我们要做的是,只需要把训练数据换一下,重新训练一个新模型就 OK 了。这也就是为什么要使用机器学习的原因,因为有时候往往获取数据比编写规则要容易得多。

GPU等计算能力显著提升:

  • 机器学习的训练需要消耗大量的计算能力。在过去我们的算力非常的差的时候,其实使用机器学习的成本是很高的,或者说几乎是不可能的。在过去科学家跑一次训练可能得几个月,而且几个月跑一次训练实验,在这个过程中一般还要失败很多次。这个训练实验需要不断地试错,不断地试验,才能慢慢降低失败的次数。
  • but…这么看的话,一次试验都要跑好几个月,那这个实验基本上也就没有什么可行性了,这也是为啥上世纪这个神经网络算法就已经被发明出来,但是到最近几年才火起来,就是因为过去的计算能力太差了。
  • 但是现在我们的计算能力显著提升了,可能一个小时内我就能跑完一次训练,得到一个模型,看到实验结果了。那么这时候使用机器学习的可行性就变得非常高了。

4、机器学习如何运作?

  • 机器学习可以通过神经网络算法来进行运作。
  • 除了神经网络之外,还可以用很多其他的算法来进行机器学习,比如说决策树支持向量机贝叶斯分类器强化学习等等。

二、神经网络简介

1、什么是神经网络

  • 神经网络,也称人工神经网络。
  • 人工神经网络是一种运算模型(就是输入输出的映射),由大量的节点(或称神经元)之间相互联接构成。
  • 运算模型指的是:从输入到输出的一种映射。

2、人工神经网络模型的特点

(1)特点

人工神经网络的特点就是:由大量的节点或神经元相互连接构成,连接之后就形成了一张类似于网络状的结构,所以我们把它称为神经网络

(2)举例

举例生活中很常见的相亲例子:

左边是输入层,右边是输出层。中间的隐藏层,其实就是神经元,这个隐藏层是为了用来输出最后结果的。

对于输入来说,输入是我们可以从相亲对象身上直观看到的一些信息,那这些信息,每一个对应到形象、财富、品质和有趣的权重值,都不太一样。

可能五官跟财富和品质就没啥关系,那在财富和品质这两个神经元中,五官的权重就低一点。又或者说,学历和家境可能会对一个人的品质造成影响,所以说在品质这个神经元里面,它的权重可能就比较偏向于学历和家境。

总之,每一个神经元里面都存储着一些权重,然后把上一层的输入乘上这些权重加起来之后就得到一个值,得到值之后,就进入到下一层的神经元。

下一层的神经元就是最后一层的神经元,这个神经元叫满意程度,这个神经元里面也存着 4 个权重,它是把前面形象、财富、品质和有趣这四个神经元算出来权重,加起来得到的满意程度。

不过呢,现实生活中的机器学习比这还要复杂的多。比如说:有些用户他的眼光是比较高的,可能在我们看来已经很好看很漂亮的女孩,或者很帅的小伙,但是在他看来就是一般人,那么这时候我们光靠权重来算形象就不够了,可能还要加上一个偏置。比如说在其他用户眼中,一个相亲对象他的形象有十分,但是在那个眼光比较高的用户眼里,只有 1 分,那么他的偏置就是-9。

值得注意的是,偏置是最后加上的,也就是那些权重乘完之后加起来然后再加上这个偏执。

接着,我们再来考虑一种情况,大多数人可能都会对相亲对象的财富有一定的要求,但是假设说超过了一定范围,其实对我们来说就没有区别了。比如说你觉得你的相亲对象只要年薪超过百万就可以了,那么他年薪 100 万、 200 万对你来说其实差别不大,但是对计算机来说这可是整整两倍的差距。所以说我们要告诉计算机,你不能再这么线性的增长上去了,对我来说只要超过 100 万都没有区别,不要再增加它的值了。

那么如何实现这一点呢? 神经元里面还有一个东西叫做激活函数,激活函数的作用就是用来做一些非线性的变化。所谓非线性的变化,就是:比如刚才我们举的例子,年薪超过 100 万就可以了,不要再线性的增长了,接下来我们可以把它想象成一条线,增长着增长这,最后就趋于直线平稳了,这就是一个非线性变化。

3、神经网络总结

最后,我们来对上面所讨论的做一个小结:

  • 每个神经元里存储着若干权重(weight)、偏置(bias)和一个激活函数(activation)。
  • 输入乘上权重加上偏置,经过激活函数得到输出。
  • 激活函数用于添加一些非线性变换。
  • 神经网络通常包含一个输入层、若干隐藏层、一个输出层。
  • 输入层通常不用于计算神经网络的层数。

三、神经网络的训练

1、什么是神经网络的训练?

  • 给大量输入和输出,算出神经网络里所有神经元的权重、偏置,然后给定新的输入,可以算出新的输出。
  • 在机器学习里输入输出被称为特征标签,大量输入输出被称为训练集
  • 同样拿上面的相亲例子做举例:给 1000 个 相亲对象的数据(特征),以及对应的满意程度(标签)。训练完之后给一份新的相亲对象数据,就可以判定满意程度了。

2、如何训练神经网络?

  • 初始化: 随机生成一些权重和偏置。
  • 计算损失: 给定特征,计算出标签,看标签与真实标签差得多远。
  • 优化: 微调权重和偏置(隐藏层),使损失变小。(微调与微积分中求导求梯度有关,哪个方向损失降得最快,那个方向就是正确的方向)

3、前向传播与反向传播

  • 前向传播:把训练数据的特征送入网络,得到标签。
  • 反向传播:计算损失并优化。(在最后一层计算损失,然后微调和优化,之后计算倒数第二层的权重)

4、如何计算损失?

  • 使用业界已经研究出来的且很成熟的损失函数
  • 常见损失函数:均方误差、对数损失、交叉熵…

5、如何优化?

  • 使用业界科学家们已经研发的优化器
  • 常见优化器:随机梯度下降(SGD)、Adam(从第三方库中调用)

结束语

在上面的文章中,我们学习了机器学习的基础知识,以及由机器学习衍生而来的人工神经网络。同时,我们还谈到了如何去训练一个神经网络。

通过本文的介绍,相信你对机器学习和神经网络会有一个基础的认识。

以上就是本文的全部内容,我们下期见~🍻

后语

  • 工程才能创造更大的价值!不一定要搞底层,会应用+懂原理,足矣创造更大的价值~
  • 参考材料:JavaScript玩转机器学习 - Tensorflow.js
  • 欢迎交流:Zelina的个人说明书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端开发中的高级技巧与最佳实践

在前端开发的广阔领域中,不断探索和掌握新的技巧与实践方法是提升开发水平和项目质量的关键。本文将深入探讨一些前端开发中的高级技巧,希望能为广大前端开发者提供有价值的参考和启示。 一、高效的组件化开发 组件化是前端开发中的核心概念之一。通过将页面拆分成独立的、…

2024 uniapp入门教程 01:含有vue3基础 我的第一个uniapp页面

uni-app官网uni-app,uniCloud,serverless,快速体验,看视频,10分钟了解uni-app,为什么要选择uni-app?,功能框架图,一套代码,运行到多个平台https://uniapp.dcloud.net.cn/ 准备工作:HBuilder X 软件 HBuilder X 官网下载&#xf…

职场上的人情世故,你知多少?这五点一定要了解

职场是一个由人组成的复杂社交网络,人情世故在其中起着至关重要的作用。良好的人际关系可以帮助我们更好地融入团队,提升工作效率,甚至影响职业发展。在职场中,我们需要了解一些关键要素,以更好地处理人际关系&#xf…

云原神的实现

个人学习笔记,持续更新…… 云原神的实现技术 云原神是一款由中国游戏公司miHoYo开发的开放世界动作角色扮演游戏。其实现涉及多种技术和平台: 引擎技术: 云原神基于Unity引擎构建,该引擎提供高度的图形性能、物理模拟和光照系统…

泛微流程隐藏按钮

隐藏右键菜单的按钮 控制台输入 mobx.toJS(WfForm.getGlobalStore().rightMenu.rightMenus) 获取相对应 type在js中进行隐藏 ecodeSDK.overwritePropsFnQueueMapSet(WeaRightMenu,{ //复写组件名隐藏菜单fn:(newProps)>{ //newProps代表组件参数newProps.datas newProps.…

css三角形:css画箭头向下的三角形

.arrow { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-style: solid; border-width: 8px 5px 0 5px; /* 上、左、下、右 */ bord…

Hierarchical Cross-Modal Agent for Robotics Vision-and-Language Navigation

题目:用于视觉语言导航的层次化跨模态智能体 摘要 1. 问题背景和现有方法 VLN任务:这是一种复杂的任务,要求智能体基于视觉输入和自然语言指令进行导航。 现有方法的局限性:之前的工作大多将这个问题表示为离散的导航图&#x…

MySQL基础教程(一):连接数据库和使用表

这个专栏用来讲解 MySQL 数据的基本语法和用法。本教程的目的是方便查询 MySQL 的用法,因此对于原理的讲解会偏少一些,但特点就是会有很多实验操作图。 本专栏使用的源材料是《MySQL必知必会》这本书的源代码。 文章目录 1. 连接 MySQL 数据库2. 创建数…

【物流配送中心选址问题】基于改进粒子群算法

课题名称: 基于改进粒子群算法的物流配送中心选址问题 改进方向:动态惯性权重优化粒子群算法 代码获取方式: 模型描述: 待补充 Matlab仿真结果: 1. 模型优化后的仿真结果 2. 初始解对应的物流配送路径图 3. 粒子…

Tianrui Green Shield

Tianrui Green Shield,即天锐绿盾,是一款专注于企业数据防泄密的软件系统。以下是对天锐绿盾的详细介绍: 一、基本信息 产品名称:天锐绿盾(又名绿盾信息安全管理软件)公司官网:www.drhchina.co…

女友学习前端第二天-笔记

2024/10/8笔记 表格 table 表格 tr 行 td 单元格内容 th 表头 第一行相当于h1 alignleft /center /right 对齐方式 应在table边上 比如<table alignleft> border 代表边框 也应在table边上 比如<table alignleft border"1"> cellpadding 单元外框与…

VMware中Ubuntu系统Docker正常运行但网络不通(已解决)

问题描述&#xff1a;在VMware中的Ubuntu系统下部署了Docker&#xff0c;当在docker容器中运行Eureka微服务时&#xff0c;发现Eureka启动正常&#xff0c;但无法通过网页访问该容器中Eureka。 解决办法如下&#xff1a; 1、创建桥接网络&#xff1a;test-net sudo docker n…

C++学习笔记----8、掌握类与对象(六)---- 操作符重载(1)

经常在对象上执行如相加&#xff0c;比较&#xff0c;文件传输等操作。例如&#xff0c;spreadsheet只有在可以在上面执行自述运算才有用&#xff0c;比如对整行的单元格求和。所有这些都可以通过重载操作符来完成。 许多人发现操作符重载的语法复杂而令人迷惑。至少一开始是这…

2024年最强网络安全学习路线,详细到直接上清华的教材!

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题前排提示&#xff1a;文末有CSDN官方认证Python入门资料包 &#xff01; 1、打基础时间太长 学基础花费很长时间&#xff0c;光语…

微信第三方开放平台接入本地消息事件接口报错问题java.security.InvalidKeyException: Illegal key size

先看报错&#xff1a; java.security.InvalidKeyException: Illegal key sizeat javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)at javax.crypto.Cipher.implInit(Cipher.java:805)at javax.crypto.Cipher.chooseProvider(Cipher.java:864)at javax.crypto.Cipher.in…

Java基础(上)

Java的特性 简单易学&#xff08;语法简单&#xff0c;上手容易&#xff09;&#xff1b; 面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff1b; 平台无关性&#xff08; Java 虚拟机实现平台无关性&#xff09;&#xff1b; 支持多线程&…

C++版iwanna1

第一篇目录 开头程序Game.cpp源文件Player.h头文件Player.cpp源文件trigger.h头文件trigger.cpp源文件Cmp.h头文件Cmp.cpp源文件 开头 大家好&#xff0c;我叫这是我58。 程序 Game.cpp源文件 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <c…

什么是数据编织

What Is Data Fabric? 【dataCamp】 What Is Data Fabric? Data fabric is a unified data architecture that connects disparate data sources, simplifying access and management while ensuring consistency and security across the entire data landscape. Data Fa…

【设计模式】设计模式介绍和常见设计模式代码示例

文章目录 设计模式分类创建型模式结构型模式行为型模式 设计模式详解单例模式&#xff08;Singleton Pattern&#xff09;懒汉模式饿汉模式 工厂模式&#xff08;Factory Pattern&#xff09;简单工厂模式工厂方法模式抽象工厂模式 装饰模式&#xff08;Decorator Pattern&…