自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 [Machine Learning] 多任务学习

多任务学习 (Multi-task Learning, MTL) 是一种同时学习多个相关问题的方法,它通过利用这些问题之间的相关性来进行学习。在单任务学习 (Single-Task Learning, STL) 中,每个任务有一个独立的模型,这些模型分别学习不同的任务。这里,每个任务(Task 1, Task 2, Task 3, Task 4)都有它自己的输入和独立的神经网络模型。这些模型不会共享学习到的特征或表示,它们是完全独立的。在多任务学习中,一个单一的模型共同学习多个任务。

2023-11-10 13:43:21 704

原创 [Machine Learning] Learning with Noisy Labels

标签噪声是指分类任务中的标签被错误地标记。这可能是由于各种原因,如数据收集错误、主观偏见或其他噪声源。在有监督的机器学习中,标签噪声指的是数据集中的标签可能不准确或错误。这种噪声可以分为两种类型:类别依赖标签噪声:这种噪声的特点是标签错误的概率仅依赖于真实的类别标签。举个例子,猫的图片可能被错误地标记为狗,而这种错误与图片的具体内容无关。实例依赖标签噪声:在这种情况下,标签错误的概率依赖于每个具体的实例。比如,某些猫的图片可能由于其特定的特征(如颜色或姿态)更容易被错误地标记为狗。

2023-11-03 22:07:30 324

原创 [Machine Learning] 领域适应和迁移学习

在机器学习中,我们的目标是找到一个假设或模型,它可以很好地描述或预测数据。当我们基于训练集训练模型时,我们的目的是让模型能够捕获到数据中的主要模式。然而,为了确保模型不仅仅是对训练数据进行记忆,而是真正理解了数据的结构,我们需要在测试集上评估它。为什么我们认为一个在训练集上表现良好的模型也应该在测试集上表现良好呢?这是基于一个核心假设:训练数据和测试数据都是从相同的分布中抽取的。因此,如果模型可以很好地理解和拟合训练数据中的模式,那么它也应该能够很好地处理测试数据。

2023-10-29 19:01:07 1431 2

原创 [Machine Learning] Learning with Noisy Data

与L1和L2范数相比,Cauchy损失更能够容忍较大的离群值,因此这种方法在面对有很多噪声和离群值的数据时更为鲁棒。不同的损失函数会对这些项赋予不同的权重,当误差(或噪声)增大时,某些损失函数会对这些项赋予更小的权重,从而更"鲁棒"。:这是模型预测的负值,这种乘积形式通常是为了衡量模型的响应强度和误差之间的关系。L2,1范数可以鼓励列的稀疏性,使得某些特定的特征在所有样本上都为零,这有助于去除离群值带来的影响。既考虑了数据的似然,又考虑了先验知识,从而可能得到更好、更稳定的估计结果。

2023-10-03 22:34:03 927 2

原创 [Machine Learning] 稀疏编码和矩阵分解

如果我们不强制 R 的稀疏性,并且允许 D 由数据的协方差矩阵的特征向量组成,那么PCA的重建就与字典学习的重建相同。对于 X 的每一个列,我们都可以将其看作是 D 的列(也叫做字典元素或基)的线性组合,而这些线性组合的系数来自 R。,其在K-means中与一个最近的集群中心关联,而在字典学习中,它可以看作是所有字典项的线性组合。它产生的是一个固定的基集,这意味着每个数据点的表示是线性的,并且是全局的。来找到不同的矩阵对,这些矩阵对会产生相同的乘积,也即相同的重建误差,这就是为什么这个问题是非凸的。

2023-09-24 13:31:47 252

原创 [高级统计学习] 假设空间和优化过程

文章目录损失函数和凸优化 (Loss Functions and Convex Optimisation)PAC学习框架 (Probably Approximately Correct Learning Framework)泛化误差 (Generalisation Error)VC维度 (Vapnik-Chervonenkis Dimension)损失函数和凸优化 (Loss Functions and Convex Optimisation)在统计学习的框架中,我们通常试图找到一个函数或概念,这个函

2023-08-21 22:32:44 824

原创 [Leetcode] [Tutorial] 多维动态规划

n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。输入:m = 3, n = 7。问总共有多少条不同的路径?一个机器人位于一个 m。

2023-08-12 13:51:44 425

原创 [Leetcode] [Tutorial] 动态规划

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。最优解可能需要考虑不仅仅是当前步骤的信息,还需要考虑如何通过整体的考虑和协调来获得最优解,这正是动态规划方法所能提供的。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。对于硬币找零问题,你可能会想到的贪心策略是:在每一步,选择不超过剩余金额的最大硬币面额。

2023-08-10 22:28:03 275

原创 [Leetcode] [Tutorial] 贪心

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。像 “ababcbacadefegde”, “hijhklij” 这样的划分是错误的,因为划分的片段数较少。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。返回到达 nums[n - 1] 的最小跳跃次数。输入: nums = [2,3,1,1,4]输入:nums = [2,3,1,1,4]输入:[7,1,5,3,6,4]

2023-08-10 22:25:27 236

原创 [Leetcode] [Tutorial] 堆

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

2023-08-10 20:53:03 85

原创 [Leetcode] [Tutorial] 栈

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

2023-08-10 20:52:15 95

原创 [Leetcode] [Tutorial] 二分查找

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。

2023-08-10 20:51:36 81

原创 [Leetcode] [Tutorial] 回溯

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

2023-08-10 20:51:02 89

原创 [Leetcode] [Tutorial] 图论

一般来说,一个合理的方法是遍历整个二维网格,每当我们遇到一个1时,我们就对它进行深度优先搜索或者广度优先搜索,并将搜索到的所有相邻的1标记为已访问。然后我们继续遍历网格的其余部分,每当我们遇到新的未访问的1时,我们就知道我们找到了一个新的岛屿。给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:grid = [输入:grid = [

2023-07-29 11:56:07 48

原创 [Leetcode] [Tutorial] 二叉树

因此,当你想要在deque中存储单个对象时,你需要将该对象放入一个可迭代的对象中,然后将该可迭代的对象传递给deque构造函数。这样,deque就可以迭代该对象并将其中的元素(在这种情况下只有一个元素,即你的root节点)存储在其中。也就是说,我们可以在将一个节点的左右子节点加入队列的同时,就检查他们是否对称。我们使用一个栈来存储节点和其颜色。如果碰到的节点为白色,则将其标记为灰色,然后将其孩子节点按照遍历的顺序(前序、中序、后序)入栈。给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

2023-07-07 15:09:11 123

原创 [Leetcode] [Tutorial] 链表

换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。这时,如果我们将B指针重定向到链表A的头部,然后继续遍历,那么B指针会在A指针到达链表A尾部之前到达交点,而A指针在到达链表A尾部后会被重定向到链表B的头部。但是,如果当A指针到达链表A的尾部时,我们将A指针重定向到链表B的头部,同样,当B指针到达链表B的尾部时,我们将B指针重定向到链表A的头部,然后继续遍历。当快指针到达链表的尾部时,慢指针就在链表的中点。

2023-07-04 14:43:55 96

原创 [Leetcode] [Tutorial] 矩阵

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5。输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]输出:[[7,4,1],[8,5,2],[9,6,3]]

2023-06-29 22:40:48 96

原创 [Leetcode] [Tutorial] 数组

在这个算法中有一个特别的处理,那就是如果所有的元素都是负数,那么max_sum会一直保持为0(因为初始化max_sum为0并且在遍历过程中只会选择max_sum和current_sum中的较大值)。如果当前的和(current_sum)变成了负数或者0,那么将其累加到后续的元素上,无论这个元素是正是负,都不可能使得累加和比这个元素自身更大。然后我们把前k个元素翻转,再把剩下的元素翻转,就能得到我们需要的结果。我们可以把每个元素都移到正确的位置,然后再把新位置的元素移到它的正确位置,这样形成一个替换的环。

2023-06-26 20:31:52 68

原创 [Leetcode] [Tutorial] 子串

需要注意的是,如果取 nums[i-k: i] 作为列表的切片,那么在第一次迭代时,i 的值是 k - 1,这意味着你实际上在取nums[0:0]的切片,它是一个空列表。然而,当你的窗口大小(k)和nums列表的长度相近或者非常大的时候,该算法会变得非常慢,因为对于每个滑动窗口,你都在使用O(k)时间复杂度的max()函数。在这个问题中,你可以维护一个双端队列,其中存储的是元素的索引,而队列中的元素按照对应的nums值降序排列。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。

2023-06-21 16:34:08 62

原创 [Leetcode] [Tutorial] 滑动窗口

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。滑动窗口中使用字典来保存字符及其索引,当出现重复字符时,移动指向窗口的左侧的指针以去除重复字符。使用两个指针,不是每次移动一位,而是直接跳到对应的位置。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。输入: s = “cbaebabacd”, p = “abc”异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。

2023-06-20 21:03:30 56

原创 [Leetcode] [Tutorial] 双指针

这种方法的正确性基于以下事实:当我们将指针从位置 i 移动到位置 i+1(假设 h[i] < h[j],其中 j 是另一个指针),我们实际上是减少了可能的宽度,因此我们需要一个更高的高度才能获得更大的面积。= 0时,我们需要进行交换操作,即交换nums[left]与nums[right],然后left向右移动,因为我们已经处理了一个非零元素,所以要增加left。当right指向的元素是零的,即nums[right] == 0时,我们不需要进行交换操作,只需要让right向右移动,继续处理下一个元素。

2023-06-17 21:56:11 49

原创 [Leetcode] [Tutorial] 哈希

此外,还需要注意的是,Python中的字典的values()方法返回的是一个dict_values对象,这不是一个列表,而是一个迭代器。我们只尝试在序列的第一个元素(也就是,当我们检查一个数的时候,它的前一个数不在哈希表中)开始构建最长序列,这样可以确保每个序列只被访问一次,所以时间复杂度是线性的。你可以将排序后的列表转换为字符串,然后将这个字符串作为字典的键。由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。

2023-06-17 19:35:31 64

原创 [Machine Learning] Density Estimation

这个kernel function是一个非负的函数,它的值在中心最大,在远离中心的地方逐渐减小,总和为1。对于简单的KDE(也叫箱型核),所有在一个给定宽度h(即窗口或带宽)内的点被赋予相同的权重。你可以将其想象成一个长方形的窗口,滑过所有的数据点,窗口内的点贡献同样的权重,窗口外的点不贡献权重。总的来说,小的带宽会导致高的方差,大的带宽会导致高的偏差小的带宽会导致高的方差,大的带宽则会导致高的偏差。如果我们假设所有的观测数据都是独立同分布的,那么整体的似然就是每一个观测值的似然的乘积。

2023-06-13 14:47:28 149 1

原创 [Deep Learning] Variational Autoencoders (VAEs)

使用Autoencoder生成新图像的典型方式是从Autoencoder学习到的潜在空间进行采样,并通过Decoder生成新的图像。与传统的Autoencoder不同,VAE的Encoder输出的不是一个确定的编码,而是编码的概率分布的参数。通过最小化重构误差和KL散度,VAE可以在生成能够重构输入数据的同时,使潜在空间的分布接近于预设的先验分布,通常是标准正态分布。其中,重构误差度量了输入。Decoder的架构可以是深度的、线性或非线性的,也可以是fully-connected的或卷积的(例如上卷积)。

2023-06-08 22:55:59 264

原创 [Deep Learning] Graph Convolutional Networks (GCN)

对于边特征,模型的支持是间接的,例如,我们可以通过调整邻接矩阵来考虑边的权重,但这种方式对边的特性进行建模的能力有限。在GCN中,所有的节点都使用同样的权值进行卷积运算,这使得模型能够在整个图中的所有位置进行运算。这种权值共享的设计减少了需要学习的参数数量,有助于防止过拟合,并使得模型可以应对不同大小和形状的输入图。对于未连接的节点,将其在邻接矩阵中对应的元素置为零。换句话说,即使你改变节点的顺序,GCN的输出结果(即节点或图的表示)都不会改变。是一个归一化常数(可以是固定的或者是可训练的),

2023-06-08 17:36:32 108

原创 [Deep Learning] Self-supervised Learning

Self-supervised learning model的学习过程通常分为两个阶段:Pre-training阶段:在此阶段,模型会在大量未标记的数据上进行训练,学习数据的内在结构和模式。例如,对于一个自我监督的语言模型,模型可能会被训练去预测句子中的缺失单词,通过这样的任务,模型能学习到词义、语法以及句子结构等重要信息。这种自我生成的标签或任务(比如预测下一个词或者填补缺失的词)提供了监督信号,即使数据本身没有明确的标签。

2023-06-08 13:53:10 100

原创 [Deep Learning] Transformer Neural Networks

输入序列中的每个元素都会独立地通过同一组权重的前馈神经网络,也就是说,序列中的每个位置都会独立地进行处理,不同位置上的元素在经过这个网络时并不共享信息。在这个过程中,我们会使用经过self-attention处理后的向量序列作为Query,而使用来自Encoder的输出作为Key和Value,进行一次新的attention运算。这些Encoder Block是串联连接的,也就是说,第一个Encoder Block的输出被用作第二个Encoder Block的输入,第二个的输出被用作第三个的输入,以此类推。

2023-06-08 10:40:24 149

原创 [Deep Learning] Generative Adversarial Networks (GANs)

Generative Adversarial Networks是深度学习的一种技术,主要目标是生成近似于真实数据分布的新数据。它是由两部分组成:Generator和Discriminator。Generator:Generator的任务是生成新的数据样本。在训练过程中,generator接收到一组随机噪声z,并通过该噪声生成数据。初期,generator生成的数据并不能很好的模仿真实的数据分布,但是随着训练的进行,generator将能够生成更好的模仿真实数据的样本。

2023-06-07 22:38:42 195 1

原创 [Statistics] Hidden Markov Model (HMM)

λπAA0​ππ1​π2​...πn​Xx1​x2​...xm​转移概率矩阵 A:矩阵的元素aij​代表从状态 i 转移到状态 j 的概率aij​Pπt1​j∣πt​i初始概率分布A0​A0​iPπ1​i发射概率矩阵 E:矩阵的元素eπi​​oj​表示给定状态πi​下产生观测oj​的条件概率eπi​​oj​Poj​∣πi​。

2023-06-05 13:31:12 30

原创 [Machine Learning] 聚类

子空间聚类是一种更复杂的聚类方法,它的目标是在高维数据中找到那些在所有维度上都不能形成聚类,但在数据的某些子空间中能形成聚类的区域。然而,和所有网格基础的聚类算法一样,结果的质量依赖于参数的选择 - 网格单元格的数量和宽度,以及密度阈值。二分K-Means的优点是它比常规的K-Means算法对初始质心的选择更不敏感,因为它从一个大的簇开始,然后逐步进行分割。选择一个新的数据点作为新的质心,选择的概率是该数据点到已经选择的质心的距离的平方与所有数据点到已经选择的质心的距离的平方之和的比例。

2023-06-04 21:15:02 137

原创 [Deep Learning] Recurrent Neural Networks (RNNs)

文章目录Elman NetworkBackpropagation Through Time (BPTT)Long Short-Term Memory (LSTM)Backpropagation Through Time (BPTT)Stacked LSTMBidirectional LSTM (Bi-LSTM)Gate Recurrent Unit (GRU)Elman NetworkElman网络是一种简单类型的循环神经网络,其特点是隐藏层的输出被反馈到同一隐藏层的输入中。换句话说,隐藏层的当前状态

2023-06-04 03:06:16 48

原创 [Deep Learning] Architectures

这是一个1x1的卷积,用于将上一步得到的特征图合并,创建跨通道的联系。

2023-06-03 20:00:58 120

原创 [Deep Learning] Convolutional Neural Networks (CNNs)

L2​Lp​。

2023-06-03 16:23:41 94

原创 [Deep Learning] Regularizations

L2正则化用于限制参数θ的L2范数。L2范数的大小被限制在一个常数值r以下,即∥θ∥22​≤r2。我们可以通过引入拉格朗日乘子(也就是我们常说的正则化系数λθmin​Lθn1​i1∑n​lθxi​yi​λ∥θ∥22​从贝叶斯的角度来看,一切都是分布。先验概率pθ是我们对参数θ的预先设想,后验概率pθ∣xi​yi​})是在观测到训练数据xi​和yi​后我们对θ的更新认识,似然函数p({

2023-06-03 00:33:46 52

原创 [Deep Learning] Initialization and Optimization

理想的初始化值应满足两个条件:

2023-06-02 00:23:12 83

原创 [Deep Learning] Multilayer Neural Network

我们的目标是找到一组权重w,使得损失函数J(w)最小。

2023-06-01 21:05:29 85

原创 [Machine Learning] Evaluation Procedure

例如,我们可以重复10次,每次都随机选取大约2/3的数据作为训练集(可能进行分层),剩余的则用于测试。为了更准确地评估模型的性能,我们可以尝试避免测试集之间的重叠,例如,使用Cross-validation等方法。折数设为训练样本的数量,对每个训练样本,都用其余的样本进行训练,然后用该样本进行测试。这种方法的优点是最大限度地使用了数据,是一种确定性的方法,每次得到的结果都是一样的。如果我们在使用Holdout Method的时候,也考虑到了各个类别的样本比例,那么就可以避免上面提到的问题,提高模型的性能。

2023-05-31 11:32:38 75

原创 [Machine Learning] 树和集成方法

在随机森林构建在bootstrap训练样本上的决策树时,每次考虑树的分裂时,只从所有p个预测变量中随机选择m个作为候选。

2023-05-30 22:02:27 35

原创 [Machine Learning] Feature Selection

Cp​R2。

2023-05-30 19:32:30 194

原创 [机器学习] 线性分类 -- 判别模型

这是因为逻辑回归是基于极大似然估计进行参数估计的,而在类别完全分离的情况下,似然函数可能不会收敛,导致估计的参数值非常大,从而影响模型的稳定性。这是因为 LDA 在建模时对数据分布有一定的假设(即每个类别的数据都服从正态分布,且各类别的数据具有相同的协方差矩阵),在满足这些假设的情况下,LDA 的表现通常会更好。这种情况下的决策边界是线性的,这也就是 LDA 的名字所来源。其中,n 是总的样本数,K 是类别的数量,n_k 是类别 k 的样本数,x_i 是第 i 个样本,y_i 是第 i 个样本的类别。

2023-05-30 16:13:40 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除