勘探开发人工智能技术:机器学习(5)

0 提纲

6.1 矩阵分解
6.2 全连接 BP 神经网络
6.3 卷积神经网络
6.4 LSTM
6.5 Transformer
6.6 U-Net

1 矩阵分解

把稀疏矩阵分解成两个小矩阵的乘积, 恢复后的矩阵用于预测.

1.1 基本概念

矩阵分解是使用数学应对机器学习问题的一类典型而巧妙的方法.
矩阵分解是把将一个 m × n m×n m×n矩阵 R \mathbf{R} R 分解为:
m × k m×k m×k 矩阵 P \mathbf{P} P n × k n×k n×k 矩阵 Q \mathbf{Q} Q
使得 R ≈ P T Q \mathbf{R}≈\mathbf{P}^\mathbf{T}\mathbf{Q} RPTQ, 其中 k ≪ min ⁡ { m , n } k≪\min\{m,n\} kmin{m,n}.
在这里插入图片描述
有两种常见的情况:

  • 非负矩阵分解 要求两个个矩阵的元素均为非负值. 这样在其应用中才有良好的解释.
  • 稀疏矩阵分解 要求 R \mathbf{R} R为稀疏矩阵, 即其元素绝大多数值为 0.

在这里插入图片描述

1.2 稀疏矩阵分解的应用: 推荐系统

问题引入: 电影网站有 m > 1 0 6 m > 10^6 m>106个用户, 以及 n > 1 0 4 n > 10^4 n>104部电影. 由于每个用户仅看了少量 (通常少于 1 0 3 10^3 103, 很多少于 1 0 2 10^2 102) 电影, 所以评分矩阵 R = ( r i j ) m × n \mathbf{R}=(r_{ij})^{m×n} R=(rij)m×n是一个稀疏矩阵, 其中 r i j = 0 r_{ij}=0 rij=0 表示用户没看这部电影, 而1~5分表示从最不喜欢到最喜欢. 现在需要预测用户对电影的评分, 也就是将0替换成具体的分数.
问题定义:

  • 输入:评分矩阵 R \mathbf{R} R, 秩 k k k;
  • 输出:用户偏好矩阵 P ∈ R k × m \mathbf{P} \in \mathbb{R}^{k \times m} PRk×m, 矩阵 Q ∈ R k × n \mathbf{Q} \in \mathbb{R}^{k \times n} QRk×n.
  • 优化目标:
    min ⁡ ∣ ∣ R − P T Q ∣ ∣ \min ||\mathbf{R} - \mathbf{P}^\mathbf{T}\mathbf{Q}|| min∣∣RPTQ∣∣

这里计算优化目标的时候, r i j = 0 r_{ij} = 0 rij=0 的数据点并不参加计算. 这样, 当把两个小矩阵 (也称用户子空间与项目子空间, subspace) 求到后, 直接相乘 R ′ = P T Q \mathbf{R}′ = \mathbf{P}^\mathbf{T}\mathbf{Q} R=PTQ, 以前 r i j = 0 r_{ij} = 0 rij=0的地方, r i j ′ = 0 r_{ij}' = 0 rij=0 就有了值, 这就是预测评分.
有没有觉得特别神奇?

1.3 推荐系统:小例子

其中用 − 表示 0, 更清楚一些
在这里插入图片描述
在这里插入图片描述
当然, 这个方案并不完美, 如

  • P , Q \mathbf{P}, \mathbf{Q} P,Q 有些元素为负值, 解释起来有点难受. 可以考虑非负矩阵分解.
  • R ′ \mathbf{R}' R有些元素不在正常范围[1,5], 可以强行让越界的数据回到边界.

1.4 SVD: 解决过拟合

为了避免过拟合, 优化目标上还可以加上正则项, 如:
min ⁡ ∣ ∣ R − P T Q ∣ ∣ + λ ( ∣ ∣ P ∣ ∣ 2 + ∣ ∣ Q ∣ ∣ 2 ) \min ||\mathbf{R} - \mathbf{P}^\mathbf{T}\mathbf{Q}|| + \lambda(||\mathbf{P}||^2 + ||\mathbf{Q}||^2) min∣∣RPTQ∣∣+λ(∣∣P2+∣∣Q2)
参考论文:Ruslan Salakhutdinov and Andriy Mnih, Probabilistic Matrix Factorization, NIPS, 2007.

1.5 子空间的物理意义

从推荐系统的角度, 每个用户对应于 1 × k 1 × k 1×k 的向量, 这是对用户偏好的高度压缩;
每个项目也对应于 1 × k 1 × k 1×k 的向量, 这是对项目属性的高度压缩.
这 k 个偏好和属性形成一一对应. 例如, k = 3 k = 3 k=3:

  • 第 1 维表示用户对颜值的关注度 (对应的是电影男女主的帅气与漂亮程度);
  • 第 2 维表示用户对情节的关注度 (对应的是剧本的逻辑性);
  • 第 3 维表示用户对视觉震撼度的要求 (对应的是电影场景与特效).

需要注意, 这里只是强行解释, 在现实世界中, 而这 k 个偏好 (属性) 的涵义可能无法表达出来, 因此我们称之为隐藏变量 (latent variable).
例:

  • 用户向量为 [ 0.8 , 0.1 , 0.1 ] 表示他是个颜控, 而电影向量为 [ 0.1 , 0.7 , 0.2 ]表示它更注重情节, 两者求内积导致评分低.
  • 如果电影向量为 [ 0.9 , 0.01 , 0.01 ]则更好地迎合该用户的品味. 内积居然可以起到这种匹配的作用.

假设 m = 1 0 6 m = 10^6 m=106, n = 1 0 4 n = 10^4 n=104, k = 10 k = 10 k=10, 原始矩阵 (如果不考虑稀疏矩阵的压缩存储) R 需要 1 0 1 0 10^10 1010存储空间;
而 P与 Q 的存储空间分别是 1 0 7 10^7 107 1 0 5 10^5 105. 从这个意义上来说, 数据的压缩比达到了约 1 : 1000.
与数据压缩相对应的是

  • 坏消息: 信息损失. R′无法对 R 完全拟合, k k k 越小, 拟合能力越差.
  • 好消息: 数据平滑. 我们经常假设原数据就是有噪声的, 矩阵分解并恢复后, 可以将它们去掉. 甚至可以将一张人脸图片进行矩阵分解与恢复, 达到美颜去痘的效果.

1.6 Bias-SVD:偏置

偏置部分主要由三个子部分组成:

  • 训练集中所有评分记录的全局平均数 μ μ μ;
  • 用户偏置 b u b_u bu,独立于物品特征的因素,表示某一特定用户的打分习惯(批判性用户、乐观型用户);
  • 物品偏置 b i b_i bi,独立于用户兴趣的因素,表示某一特定物品得到的打分情况(好片、烂片);
    b u i = μ + b u + b i b_{ui}=μ+b_u+b_i bui=μ+bu+bi
    在这里插入图片描述

1.7 带情感分析的矩阵分解(SBMF)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考论文:Sentiment based matrix factorization with reliability for recommendation. Expert Systems with Applications. (2019) 249-258

1.8 带情感分析的矩阵分解(SBMF+R)

在这里插入图片描述
在这里插入图片描述

2 全连接 BP 神经网络

线性 + 激活函数, 人工神经网络是万能的函数逼近器.

2.1 BP 神经网络的结构

BP (Backpropagation ) 神经网络是一个万能的函数模拟器.
所有的神经网络, 本质都是特征提取器 – 斯.沃索地.

下图给出一个四层神经网络.

  • 输入层有 3 个端口, 表示数据有 3 个特征;
  • 第一个隐藏层有 5 个节点, 表示从 3 个特征提出了 5 个新的特征, 每个新特征都是前一特征的加权和 (线性模型);
  • 第二个隐藏层有 4 个节点, 表示从上一层的 5 个特征提出了 4 个新的特征;
  • 输出层有 2 个节点, 表示从上一层的 4 个特征提出了 2 个新的特征.

在这里插入图片描述
神经网络可以解决各种机器学习问题:

  • 假设这里应对的是二分类问题, y 1 y_1 y1对应于负例, y 2 y_2 y2对应于正例, 那么, y 1 ≥ y 2 y_1 ≥ y_2 y1y2时, 就预测为负例, 否则预测为正例.
  • 对于 k k k 个类别的多分类问题, 输出端口数设置为 k k k.
  • 对于回归问题, 输出端口设置为 1.

2.2 激活函数

仅仅是线性方案, 也就相当于logistic 回归 的水平, 肯定不能让 BP 神经网络达到现有的高度. 而且, 仅仅是线性方案, 多层与两层没有区别, 因为三层的 X W 1 W 2 \mathbf{X}\mathbf{W}_1\mathbf{W}_2 XW1W2可以替换为两层的 X W 3 \mathbf{X}\mathbf{W}_3 XW3, 其中 W 3 = W 1 W 2 \mathbf{W}_3 = \mathbf{W}_1\mathbf{W}_2 W3=W1W2.

  • 激活函数将加权和变成另一个值, 如 f ( x ) = max ⁡ { 0 , x } f(x) = \max\{0, x\} f(x)=max{0,x}
  • 这种简单到令人发指的函数, 就可以改变线性特点.
  • 于是, 神经网络就变成了万能的函数逼近器, 也就是说, 任意函数都可以用一个神经网络来逼近, 参见 https://zhuanlan.zhihu.com/p/162769333

在这里插入图片描述

2.3 与 PCA 的联系与区别

联系: 都是进行特征提取.
区别:

  • PCA 的特征提取是无监督的, 神经网络一般是有监督的;
  • PCA 的特征提取有理论依据, 神经网络的连边使用一些随机的初始权重, 然后不断调整;
  • PCA 的特征提取数量有理论依据, 神经网络每层节点数量 (特征数量) 是人为设置的超参数, 连激活函数的选取也是人为的.

2.4 深度学习与宽度学习

如果数据集比较小, 特征比较少, 则应该使用较少的层数, 以及较少的节点数.
如果数据集比较大, 特征比较多, 则应该使用较多的层数, 以及较多的节点数. 所以形成了深度学习. 换言之, 深度学习特别“吃”数据, 数据量小了就别玩, 去搞搞SVM之类的小样本学习吧.

宽度学习是指隐藏层的节点数非常多, 理论上已经证明, 宽度学习与深度学习是等价的. 我认为原因在于: 由于神经网络初始权重设置的随机性, 宽度学习提取的特征非常多, 总有几个是合适的.

2.5 关于调参师

有些人诟病做神经网络 (特别是应用) 就是当网络调参师: 几层,什么激活函数,以及哪些组件 (这个在后面要介绍). 我还是有不同意见. 机器学习需要有洞察力 (insight), 如果基础不牢, 没有机器学习的基本思路, 就像在漆黑的屋子里面找东西一样, 纯碰运气是不气的. 本系列贴子也是希望为读建立一些 insight.

3 卷积神经网络

卷积核是个透视镜, 把原图像扫描一遍变成新图像.

3.1 卷积操作

下图下平面标定的 3×3 区域, 对应于个3×3 卷积, 这 9 个数对应着相乘, 然后相加, 获得了上平面标定的 1 个小区域的值. 注意这里不是矩阵的乘法.
卷积有三种模式, 可以把图片变大 (full)、变小 (valid)、保持尺寸 (same).
与全连接网络相同, 卷积神经网络 CNN 也需要在加权和之后使用激活函数, 以使其具有非线性的优点.
在这里插入图片描述
卷积层:特征提取
可以将图像卷积看成全连接网络的权值共享(weight sharing)

在这里插入图片描述

等价于下边的权值共享网络:
在这里插入图片描述

3.2 ReLU 激活层

加入非线性因素,将卷积层输出结果做非线性映射。
ReLU 函数:对于输入负值,输出全为0;正值原样输出。
在这里插入图片描述

3.3 池化层:提取重要的特征信息

100×100 的图片, 用3×3 卷积核去卷, 第 2 层变成98×98 图片, 第 3 层变成96×96 图片, 太慢啦!
用池化操作可以把多个点压缩成一个点, 如把 98×98 图片每 2×2 个点取最大值 (或平均值, 最小值), 瞬间变成 49×49 的图片.
是不是很随意的样子? 有效就行.
在这里插入图片描述

3.4 单层卷积神经网络

在这里插入图片描述

3.5 全连接层

全连接层在整个卷积神经网络中起到“分类器”的作用,即通过卷积、池化等深度网络后,再经过全连接层对结果进行识别分类.
在这里插入图片描述

3.6 卷积神经网络流程

在这里插入图片描述

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

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

相关文章

Springboot所有的依赖

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 声明springboot的版本号 -->…

【行为型设计模式】C#设计模式之策略模式

题目&#xff1a;假设你正在开发一个手机应用程序&#xff0c;该应用程序包含一个计算器功能。用户可以根据自己的需求选择不同的计算策略进行计算&#xff0c;例如加法、减法、乘法或除法。请使用策略模式设计该计算器功能&#xff0c;使得用户可以根据自己的选择进行相应的计…

MongoDB 分片集群

在了解分片集群之前&#xff0c;务必要先了解复制集技术&#xff01; 1.1 MongoDB复制集简介 一组Mongodb复制集&#xff0c;就是一组mongod进程&#xff0c;这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性&#xff0c;这是生产部署的基础。 1.1.1 复制集…

3D Web轻量化引擎HOOPS Communicator如何实现对BIM桌面端的支持?

HOOPS Communicator是一款简单而强大的工业级高性能3D Web轻量化渲染开发包&#xff0c;其主要应用于Web领域&#xff0c;主要加载其专有的SCS、SC、SCZ格式文件&#xff1b;HOOPS还拥有另一个桌面端开发包HOOPS Visualize&#xff0c;主要加载HSF、HMF轻量化格式文件。两者虽然…

基于 eclipse-temurin 构建国内时区,地区,语言的docker镜像

基于 eclipse-temurin 构建国内时区&#xff0c;地区&#xff0c;语言的镜像 使用场景自定Dockerfile构建自己的基础镜像构建本地镜像推送远程仓库 使用场景 在给应用构建自定义镜像时&#xff0c;往往需要在每次构建时去调整时区&#xff0c;地区这些东西&#xff1b;每次构建…

那些年的Xposed开发经验记录

把之前写的Xposed相关文章合并到一块&#xff0c;方便查阅 目录 多进程App的Hook问题XposedHelper中的静态变量demo的AndroidManifest.xml的测试核心代码结论限制handleLoadPackage被单个进程多次执行的问题 多dex Hook问题为应用增加权限利用Xposed删除权限参考 Hook框架集锦…

Java基础入门篇——IDEA开发第一个入门程序(五)

目录 一、IDEA层级结构分类 二、IDEA层级结构介绍 三、IDEA层级关系 四、创建IDEA中的第一个代码 一、IDEA层级结构分类 IntelliJ IDEA的项目结构主要分为以下几个层级&#xff1a; Project&#xff1a; 项目Module: 模块Package: 包Class&#xff1a; 类 一个项目里面…

hive-3.1.3 部署 ubuntu20

准备 安装hadoop 安装hive derby # 上传 scp -P 22 -r D:\00garbage\big_data\hive\apache-hive-3.1.3-bin.tar.gz mybigdata192.168.66.20:/home/mybigdata/ tar -zxvf apache-hive-3.1.3-bin.tar.gz mv apache-hive-3.1.3 hive # 环境变量 vim ~/.bashrc # 初始化元数据库…

力扣:58. 最后一个单词的长度(Python3)

题目&#xff1a; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#x…

Android图形-合成与显示-概论

目录 引言 概念与理解 SurfaceFlinger Surface HWC Fence&#xff1a; Gralloc&#xff1a; DisplayDevice 引言 Activity是Android的主要UI相关组件。通过View的相关类和接口实现&#xff0c;在WMS的管理下&#xff0c;进行窗口和控件的测量&#xff0c;布局和绘制&am…

(十四)大数据实战——hadoop集群一键式高可用实现自动故障转移与故障初始化恢复

前言 本节内容延续前面几节内容,综合性的实现hadoop集群的高可用以及hadoop集群故障初始化的恢复,通过一个脚本,实现整个集群的高可用启停与状态观测。主要是zookeeper、hdfs、yarn等服务的高可用集群的一键式启停。 正文 hadoop高可用集群整体规划hadoop高可用集群服务规…

什么是公共英语三级?公共英语三级主要考什么

一、公共英语考试介绍 全国英语等级考试&#xff08;又称公共英语考试&#xff09;设置五个级别和一个附属级&#xff0c;五个级别是&#xff1a; 一级&#xff3b;含一级(B)&#xff0c;即附属级&#xff3d;、二级、三级、四级、五级。 公共英语一级的说明:一级是初始级&…

模拟实现消息队列项目(系列3) -- 服务器模块(硬盘管理)

目录 前言 1. 创建项目 2. 创建核心类 2.1 Exchange 2.2 MSQueue 2.3 Binding 2.4 Message 3. 数据库设计 3.1 SQLite 配置 3.2 Mapper层代码实现 3.2.1 创建表操作 3.2.2 交换机 队列 绑定的增加和删除 3.3 实现DataBaseManager 3.4 DataBaseManager单元测试 4.…

k8s 使用 containerd 运行时配置 http 私服

简介 Kubernetes 从 v1.20 开始弃用 Docker&#xff0c;并推荐用户切换到基于容器运行时接口&#xff08;CRI&#xff09;的容器引擎&#xff0c;如 containerd、cri-o 等。 目前使用的环境中使用了 Kubernetes v1.22.3&#xff0c;containerd 1.4.3&#xff0c;containerd 在…

线性代数(三) 线性方程组向量空间

前言 如何利用行列式&#xff0c;矩阵求解线性方程组。 线性方程组的相关概念 用矩阵方程表示 齐次线性方程组&#xff1a;Ax0&#xff1b;非齐次线性方程组&#xff1a;Axb. 可以理解 齐次线性方程组 是特殊的 非齐次线性方程组 如何判断线性方程组的解 其中R(A)表示矩阵A的…

git的简单介绍和使用

git学习 1. 概念git和svn的区别和优势1.1 区别1.2 git优势 2. git的三个状态和三个阶段2.1 三个状态&#xff1a;2.2 三个阶段&#xff1a; 3. 常用的git命令3.1 下面是最常用的命令3.2 git命令操作流程图如下&#xff1a; 4. 分支内容学习4.1 项目远程仓库4.2 项目本地仓库4.3…

恒盛策略:沪指冲高回落跌0.26%,酿酒、汽车等板块走弱,燃气股拉升

10日早盘&#xff0c;两市股指盘中冲高回落&#xff0c;半日成交约4200亿元&#xff0c;北向资金净卖出超20亿元。 到午间收盘&#xff0c;沪指跌0.26%报3235.9点&#xff0c;深成指跌0.54%&#xff0c;创业板指跌0.28%&#xff1b;两市算计成交4202亿元&#xff0c;北向资金净…

【Terraform学习】保护敏感变量(Terraform配置语言学习)

实验步骤 创建 EC2 IAM 角色 导航到IAM 在左侧菜单中&#xff0c;单击角色 。单击创建角色该按钮以创建新的 IAM 角色。 在创建角色部分&#xff0c;为角色选择可信实体类型&#xff1a; AWS 服务 使用案例:EC2 单击下一步 添加权限&#xff1a;现在&#xff0c;您可以看到…

LAMP及论坛搭建

一、概述 LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词&#xff0c;具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP&#xff08;或…

小白到运维工程师自学之路 第七十一集 (kubernetes网络设置)

一、概述 Master 节点NotReady 的原因就是因为没有使用任何的网络插件&#xff0c;此时Node 和Master的连接还不正常。目前最流行的Kubernetes 网络插件有Flannel、Calico、Canal、Weave 这里选择使用flannel。 二、安装flannel 1、master下载kube-flannel.yml&#xff0c;所…