张量分解(5)——Tucker分解

🍅 写在前面
👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
                       LeetCode算法实例
                       张量分解

张量分解系列知识,详见下方链接:

张量分解(1)——初探张量

张量分解(2)——张量运算

张量分解(3)——CP分解

张量分解(4)——SVD奇异值分解

张量分解(5)——Tucker分解

本系列文章主要参考论文:Tensor Decompositions and Applications∗

目录

  • Tucker分解综述
  • Tucker分解公式
  • Tucker分解优化

Tucker分解综述

Tucker分解是高阶主成分分析的一种形式,它将一个张量分解成核张量与每一维矩阵的乘积。三维张量Tucker分解表示如下图:
在这里插入图片描述

Tucker分解公式

以三维张量 X ∈ R I × J × K \mathcal{X} \in \mathbb{R}^{I \times J \times K} XRI×J×K为例,可以得到Tucker分解公式为:
X ≈ G × 1 A × 2 B × 3 C = ∑ p = 1 P ∑ q = 1 Q ∑ r = 1 R g p q r a p ∘ b q ∘ c r = ⟦ G ; A , B , C ⟧ \boldsymbol{X} \approx \mathcal{G} \times{ }_1 \mathbf{A} \times{ }_2 \mathbf{B} \times{ }_3 \mathbf{C}=\sum_{p=1}^P \sum_{q=1}^Q \sum_{r=1}^R g_{p q r} \mathbf{a}_p \circ \mathbf{b}_q \circ \mathbf{c}_r=\llbracket \mathcal{G} ; \mathbf{A}, \mathbf{B}, \mathbf{C} \rrbracket XG×1A×2B×3C=p=1Pq=1Qr=1Rgpqrapbqcr=[[G;A,B,C]]
有了前几节基础知识的铺垫,相信这里公式不难理解。
这里 A ∈ R I × P , B ∈ R J × Q \mathbf{A} \in \mathbb{R}^{I \times P}, \mathbf{B} \in \mathbb{R}^{J \times Q} ARI×P,BRJ×Q, and C ∈ R K × R \mathbf{C} \in \mathbb{R}^{K \times R} CRK×R是张量的因子矩阵,它们通常是正交的,可以将它们看做每一个维度上的主要成分。
扩展到更高维度,Tucker分解的公式如图:
在这里插入图片描述
Tucker分解也能够转化为矩阵形式,具体形式为:
X ( 1 ) ≈ A G ( 1 ) ( C ⊗ B ) ⊤ , X ( 2 ) ≈ B G ( 2 ) ( C ⊗ A ) ⊤ , X ( 3 ) ≈ C G ( 3 ) ( B ⊗ A ) ⊤ . \begin{aligned} & \mathbf{X}_{(1)} \approx \mathbf{A G}_{(1)}(\mathbf{C} \otimes \mathbf{B})^{\top}, \\ & \mathbf{X}_{(2)} \approx \mathbf{B G}_{(2)}(\mathbf{C} \otimes \mathbf{A})^{\top}, \\ & \mathbf{X}_{(3)} \approx \mathbf{C G}_{(3)}(\mathbf{B} \otimes \mathbf{A})^{\top} . \end{aligned} X(1)AG(1)(CB),X(2)BG(2)(CA),X(3)CG(3)(BA).

Tucker分解优化

Tucker分解的优化通常有两种方法,分别是HOSVD和HOOI。
1、HOSVD:higher-order SVD(HOSVD),它通过张量的每一个mode上做SVD分解对各个mode上的因子矩阵进行求解,最后计算张量在各个mode上的投影之后的张量作为核张量。它的算法过程如下图所示:
在这里插入图片描述
最终优化目标为:
∣ X − [ [ G ; A ( 1 ) , ⋯   , A ( N ) ] ] ∣ = ∣ vec ⁡ ( X ) − ( A ( N ) ⊗ ⋯ ⊗ A ( 1 ) ) vec ⁡ ( G ) ∣ \left|\mathcal{X}-\left[\left[\mathcal{G} ; \mathbf{A}^{(1)}, \cdots, \mathbf{A}^{(\mathbb{N})}\right]\right]\right|=\left|\operatorname{vec}(\mathcal{X})-\left(\mathbf{A}^{(\mathbb{N})} \otimes \cdots \otimes \mathbf{A}^{(1)}\right) \operatorname{vec}(\mathcal{G})\right| X[[G;A(1),,A(N)]] = vec(X)(A(N)A(1))vec(G)
整体平方化简得:
∥ X − [ G ; A ( 1 ) , ⋯   , A ( N ) ] ∥ 2 = ∥ X ∥ 2 − 2 ⟨ X , [ G ; A ( 1 ) , ⋯   , A ( N ) ∥ ⟩ + ∥ G ; A ( 1 ) , ⋯   , A ( N ) ] ∥ 2 = ∥ X ∥ 2 − 2 ⟨ X × 1 A ( 1 ) T … × N A ( N ) T , G ⟩ + ∥ G ∥ 2 = ∥ X ∥ 2 − 2 ⟨ G , G ⟩ + ∥ G ∥ 2 = ∥ X ∥ 2 − ∥ X × 1 A ( 1 ) T ⋯ × N A ( N ) T ∥ 2 \begin{aligned} & \left\|\mathcal{X}-\left[\mathcal{G} ; \mathbf{A}^{(1)}, \cdots, \mathbf{A}^{(\mathrm{N})}\right]\right\|^2 \\ = & \|\mathcal{X}\|^2-2\left\langle\mathcal{X},\left[\mathcal{G} ; \mathbf{A}^{(1)}, \cdots, \mathbf{A}^{(\mathrm{N})} \|\right\rangle+\| \mathcal{G} ; \mathbf{A}^{(1)}, \cdots, \mathbf{A}^{(\mathrm{N})}\right] \|^2 \\ = & \|\mathcal{X}\|^2-2\left\langle\mathcal{X} \times_1 \mathbf{A}^{(1) \mathrm{T}} \ldots \times_{\mathrm{N}} \mathbf{A}^{(\mathrm{N}) \mathrm{T}}, \mathcal{G}\right\rangle+\|\mathcal{G}\|^2 \\ = & \|\mathcal{X}\|^2-2\langle\mathcal{G}, \mathcal{G}\rangle+\|\mathcal{G}\|^2 \\ = & \|\mathcal{X}\|^2-\left\|\mathcal{X} \times_1 \mathbf{A}^{(1) \mathrm{T}} \cdots \times_{\mathrm{N}} \mathbf{A}^{(\mathrm{N}) \mathrm{T}}\right\|^2 \end{aligned} ==== X[G;A(1),,A(N)] 2X22X,[G;A(1),,A(N)+G;A(1),,A(N)]2X22X×1A(1)T×NA(N)T,G+G2X22G,G+G2X2 X×1A(1)T×NA(N)T 2
由于 ∥ X ∥ \|\mathcal{X}\| X 是一个常数,最小化上面的式子相当于最大化后面的: max ⁡ ∥ X × 1 A ( 1 ) T ⋯ × N A ( N ) T ∥ \max \left\|\mathcal{X} \times{ }_1 \mathbf{A}^{(1) \mathrm{T}} \cdots \times_{\mathrm{N}} \mathbf{A}^{(\mathrm{N}) \mathrm{T}}\right\| max X×1A(1)T×NA(N)T 最终得到:
max ⁡ ∥ A ( n ) T W ∥  s.t.  W = X ( n ) ( A ( N ) ⊗ … ⊗ A ( n + 1 ) ⊗ A ( n − 1 ) ⋯ ⊗ A ( 1 ) ) \begin{aligned} & \max \left\|\mathbf{A}^{(\mathrm{n}) \mathrm{T}} \mathbf{W}\right\| \\ & \text { s.t. } \mathbf{W}=\mathbf{X}_{(\mathrm{n})}\left(\mathbf{A}^{(\mathrm{N})} \otimes \ldots \otimes \mathbf{A}^{(\mathrm{n}+1)} \otimes \mathbf{A}^{(\mathrm{n}-1)} \cdots \otimes \mathbf{A}^{(1)}\right) \\ & \end{aligned} max A(n)TW  s.t. W=X(n)(A(N)A(n+1)A(n1)A(1))
2、HOOI:这个算法本人还不是太了解,暂且将步骤放在这里。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】构造函数详解

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

【开源 Mac 工具推荐之 1】gibMacOS:方便快捷的 macOS 完整包下载 Shell 工具

简介 gibMacOS 是由 GitHub 开发者 corpnewt 编写的一款 Shell 工具。它采用 Python 编程语言,可以让用户打开后在纯文本页面中轻松选择并下载来源于 Apple 官方的 macOS 完整安装包。 Repo 地址:https://github.com/corpnewt/gibMacOS (其…

阿里通义音频生成大模型 FunAudioLLM 开源

简介 近年来,人工智能(AI)技术的进步极大地改变了人类与机器的互动方式,特别是在语音处理领域。阿里巴巴通义实验室最近开源了一个名为FunAudioLLM的语音大模型项目,旨在促进人类与大型语言模型(LLMs&…

HTML+CSS博客文章列表

源代码在图片后面 点赞❤️收藏⭐️关注&#x1f495; 图示 感谢各位大佬支持 &#x1f618;&#x1f618;&#x1f618; 源代码 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>博…

解决ESLint和Prettier冲突的问题

在配置了ESLint的项目中使用Prettier进行格式化可能会出现冲突&#xff0c;不如Prettier配置了使用双引号&#xff0c;ESLint配置了单引号&#xff0c;当然可以一个一个改成一样的配置&#xff0c;但是比较麻烦。我发现可以直接使用ESLint的规则进行格式化。在VSCode配置过程如…

springmvc1

以前的servlet程序&#xff1a; springmvc 不同的处理器&#xff1a;不同的方法或者处理类 所有的请求都会经过dispathcherservlet的doservice方法&#xff1a; mvc原理&#xff1a; 前端控制器&#xff1a;jsp或者什么东西

AutoMQ 中的元数据管理

本文所述 AutoMQ 的元数据管理机制均基于 AutoMQ Release 1.1.0 版本 [1]。 01 前言 AutoMQ 作为新一代基于云原生理念重新设计的 Apache Kafka 发行版&#xff0c;其底层存储从传统的本地磁盘替换成了以对象存储为主的共享存储服务。对象存储为 AutoMQ 带来可观成本优势的…

【C++】初识C++(下)

前言 本篇博客继续总结一下C入门的一些小知识 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;C 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 1.引用 1.1引用的概念 1.2const引用 1.3指针和引用的…

外包干了1个月,技术明显退步。。。

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

软件测试面试题全网独家没有之一的资深测试工程师面试题集锦

1.自我介绍&#xff1f; 我是谁、工作几年、你上家公司做什么、负责什么、你的优势、为什么适合这个职位、我想做什么、在这个职位上想得到什么 有自信、不能吞吞吐吐 时间长度2-3分钟 2编写测试用例有哪几种方法&#xff1f; 等价类、边界值、因果图、流程分析、错误分析、…

【Pytorch】数据集的加载和处理(一)

Pytorch torchvision 包提供了很多常用数据集 数据按照用途一般分为三组&#xff1a;训练&#xff08;train&#xff09;、验证&#xff08;validation&#xff09;和测试&#xff08;test&#xff09;。使用训练数据集来训练模型&#xff0c;使用验证数据集跟踪模型在训练期间…

ectype:拓展ctype

拓展C库的ctype模块&#xff0c;将字节块或字符串进行分类或转换。

SQL Server 创建用户并授权

创建用户前需要有一个数据库&#xff0c;创建数据库命令如下&#xff1a; CREATE DATABASE [数据库名称]; CREATE DATABASE database1; 一、创建登录用户 方式1&#xff1a;SQL命令 命令格式&#xff1a;CREATE LOGIN [用户名] WITH PASSWORD 密码; 例如&#xff0c;创建…

全球DeepFake攻防挑战赛DataWhale AI 夏令营——图像赛道

全球DeepFake攻防挑战赛&DataWhale AI 夏令营——图像赛道 赛题背景 随着人工智能技术的迅猛发展&#xff0c;深度伪造技术&#xff08;Deepfake&#xff09;正成为数字世界中的一把双刃剑。这项技术不仅为创意内容的生成提供了新的可能性&#xff0c;同时也对数字安全构…

Mac 息屏不断网

这里息屏指的是屏幕不黑&#xff0c;屏幕黑了好像必断网 我的系统是 14.5 我调整了两个地方&#xff0c;一个是电池——选项——唤醒以供访问 另外一个地方是锁定屏幕——延长关闭显示器的时间&#xff08;让显示器不黑&#xff09;

如何批量删除重复数据?推荐两种方法

在日常的办公中&#xff0c;很多用户都会使用Excel。借助这款软件&#xff0c;用户可以完成对各种数据的处理。但很多时候我们会发现&#xff0c;同一张表格里有很多重复的数据&#xff0c;这或许会为统计带来错误。为此&#xff0c;我们就需要删除重复项才可以帮助我们很好的解…

STM32+三色LED智能调光系统源程序 易安卓APP 原理图

资料下载地址&#xff1a;STM32三色LED智能调光系统源程序 易安卓APP 原理图 三色LED手机智能调光系统概述&#xff1a; 利用开发的智能手机软件&#xff0c;对照明三色LED进行智能调光。包含的功能有&#xff0c;支持多手机同时连接服务端&#xff0c;互动调光。支持关…

前端Vue组件化实践:打造仿京东天猫商品属性选择器组件

在前端开发领域&#xff0c;随着业务需求的日益复杂和技术的不断进步&#xff0c;传统的整体式应用开发模式已逐渐显得捉襟见肘。面对日益庞大的系统&#xff0c;每次微小的功能修改或增加都可能导致整个逻辑结构的重构&#xff0c;形成牵一发而动全身的困境。为了解决这一问题…

昇思25天学习打卡营第22天|ResNet50图像分类

上回说到RESNET50做迁移学习&#xff0c;今天看一下他在图片分类上面的表现。图像分类是最基础的计算机视觉应用&#xff0c;属于有监督学习类别&#xff0c;先喂一堆猫的照片告诉他这是猫&#xff0c;再喂一堆狗的图片告诉他这是狗。 CIFAR-10数据集共有60000张32*32的彩色图…

ARDUINO最新pinMode()管脚设置方法(24年7月)

Arduino管脚配置 ESP32 Arduino管脚配置测试正常。 pinMode&#xff08;&#xff09; [数字 I/O] 描述 将指定的引脚配置为输入或输出。有关引脚功能的详细信息&#xff0c;请参阅数字引脚部分。 可以使用模式INPUT_PULLUP使能内部上拉电阻。此外&#xff0c;INPUT模式明…