0%

论文阅读:Generative Adversarial Transformers

1 摘要

背景:

  • 本文的核心思想来自于认知科学领域经常讨论的人类感知的两种互惠机制:自下而上(从视网膜到视觉皮层 - 局部元素和显着刺激分层组合在一起形成整体)处理和 自上而下(围绕全局上下文、选择性注意和先验知识为特定的解释提供信息)处理;
  • 过去十年在计算机视觉领域取得巨大成功的卷积神经网络并没有反映视觉系统的这种双向性质。相反,它的前馈传播只是通过从原始感觉信号建立更高的抽象表示来模拟自下而上的处理;
  • CNN 的局部感受野和刚性计算会使得 CNN 缺乏对全局上下文的理解,这样会导致许多问题:
    • 模型难以建立和捕捉长期依赖关系;
    • 缺乏对全局形状和结构形成整体理解的能力;
    • 优化和训练稳定性问题,如 GAN 模型普遍存在难训练的问题,因为在生成图像的精细细节之间的协调存在着固有的困难。
  • 需要新型模型来缓解上述问题。

核心思想:

阅读全文 »

Statement:

Here are some very important announcements: The content of this blog is from the Python experiment of probability theory and mathematical statistics at the School of Electronic and Information Engineering, Shenzhen University. If you happen to be completing this experiment, please only use this blog as a reference, please do not copy it directly. If this blog violates your rights, please contact me to delete it.

DataSet:https://www2.aueb.gr/users/ion/data/enron-spam/

1. Experimental Purposes

  • Familiar with the Bayes theorem.
  • Understand the implementation of the Bayes theorem in python.
  • Know how to use Naive Bayes for a practical task, e.g., text classification.
阅读全文 »

1 PCA

  在解决实际问题的时候,多变量问题是经常会遇到的,变量太多,无疑会增加分析问题的难度与复杂性。同时,在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,能否在各个变量之间相关关系研究的基础上, 用较少的新变量代替原来较多的变量,而且使这些较少的新变量尽可能多地保留原来较多的变量所反映的信息?事实上,这种想法是可以实现的。

1.1 原理

  PCA(Principal Components Analysis,,主成分分析)是将原来多个变量化为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。 下面举例说明其原理,加入有以下数据:

img

阅读全文 »

1 原理简述

  Self-Attention Layer 一次检查同一句子中的所有单词的注意力,这使得它成为一个简单的矩阵计算,并且能够在计算单元上并行计算。 此外,Self-Attention Layer 可以使用下面提到的 Multi-Head 架构来拓宽视野,也就是多头注意力机制。Self-Attention Layer 基本结构如下:
在这里插入图片描述

对于每个输入 $\boldsymbol{x}$,首先经过 Embedding 层对每个输入进行编码得到 $\boldsymbol{a_1,a_2,a_3,a_4}$,后将输入特征经过三个全连接层分别得到 Query,Key,Value

  • $\boldsymbol{q^i(Query) = W^q a^i}$;
  • $\boldsymbol{k^i(Key) = W^k a^i}$;
  • $\boldsymbol{v^i(Value) = W^v a^i}$。

$\boldsymbol{W^q, W^k,W^v}$ 由网络训练而来。注意力矩阵是由 Query 和 Key 计算得到,方式由许多种,如点积、缩放点积等。Value 可以看作是信息提取器,将根据单词的注意力提取一个唯一的值,也即某个特征有多少成分被提取出来。下面计算一种注意力矩阵的方式:缩放点积。
在这里插入图片描述
注意力矩阵 $\boldsymbol{A}$ 定义为 Query (giver) 和 Key (receiver) 的内积除以其维度的平方根。 每个单词通过提供 Query 来匹配作为注意力的目标单词的 Key,从而对所有单词产生注意力。为防止注意力分数随维度增大而增大,让注意力矩阵除以向量的维度的开方。 然后对得到的注意力矩阵 $\boldsymbol{A}$ 进行 Softmax 归一化得到 $\boldsymbol{\hat{A}}$,最后将 $\boldsymbol{\hat{A}}$ 乘以 Value 矩阵并相加得到最终的特征 $\boldsymbol{b}$。
在这里插入图片描述

阅读全文 »

论文阅读:Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks

1 文章简述

  该文章的主要思想是将预测概率最大的标记作为无标记数据的伪标签,然后给未标记数据设一个权重,在训练过程中慢慢增加未标记数据的权重来进行训练,在手写体数据集上有了较好的性能。算法流程如下:


输入:样本集 $\boldsymbol{D1 = \{(x_1, y_1),(x_2,y_2),\cdots,(x_n, y_n)\}, D2 = \{x_1,x_2,,\cdots,x_n\}}$,其中 $\boldsymbol{D_1}$ 为已标注数据,$\boldsymbol{D_2}$ 为未标注数据;

阅读全文 »

1 网络结构

  MTCNN 是多任务级联 CNN 的人脸检测深度学习模型,该模型不仅考虑了人脸检测概率,还综合训练了人脸边框回归和面部关键点检测,多任务同时建立 loss function 并训练,因此为 MTCNN。级联 CNN 主要由三个子网络组成:P-Net、R-Net 和 O-Net。
  P-Net 的结构如下:
在这里插入图片描述\](https://img-blog.csdnimg.cn/a37a2812f2914fd48ae0c9f7ed16cb35.png

从网络结构上看,P-Net 接受大小为 (12,12,3) 的图片的输入,输出三种特征图,大小为 (1,1,C),也就是说最终得到的特征图每一点都对应着一个大小为 12×12 的感受野。三种输出如下:

  • cls:图像是否包含人脸,输出向量大小为 (1,1,2),也就是两个值,即图像不是人脸的概率和图像是人脸的概率。这两个值加起来严格等于 1,之所以使用两个值来表示,是为了方便定义交叉熵损失函数;
  • bounding_box:当前框位置相对完美的人脸框位置的偏移。这个偏移大小为 (1,1,4),即表示框左上角和右下角的坐标的偏移量。网络结构中的输出叫做 bounding_boxes,如果按代码来说应该是 offsets
  • landmark:5 个关键点相对于人脸框的偏移量。分别对应着左眼的位置、右眼的位置、鼻子的位置、左嘴巴的位置、右嘴巴的位置。每个关键点需要两维来表示,因此输出是向量大小为 (1,1,10)。

Tips:

阅读全文 »

1 什么是A*算法

  假设一个走迷宫游戏,我将 A 点定义成起点也就是开始状态,定义 B 为终点也就是结束状态。我们的目标就是找到从 A 走到 B 地最佳路径,如下图所示:

在这里插入图片描述

我们可以将上述的迷宫看做一张图,在简单的情况下(比如这个),生成的图由少量节点和边组成,BFS、DFS 和 Dijkstra 就足够了。然而,在现实生活中,因为我们通常要处理组合复杂性非常大的问题,我们将不得不处理大量的节点和边,而 BFS、DFS 和 Dijkstra 要不可避免地遍历整张图,搜索代价十分巨大。因此,我们必须使用某种意义上的引导算法(启发式算法)。A 算法就是一种启发式算法。与其他图遍历算法不同,A 仅根据其功能在看起来有希望且合理的情况下执行一个步骤。它朝着目标前进,不考虑任何非最佳步骤,所以 A 所搜索出来的路径一定是最优路径。这使得 A 对于人工智能系统非常有用——尤其是在机器学习和游戏开发中,因为这些系统复制了现实世界的场景。

1.1 A* 的基本概念

阅读全文 »

344. 反转字符串

  编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例一:

1
2
输入:s = ["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例二:

阅读全文 »

1 什么是图

  图是一种数据结构,可用于对对象之间的层次结构和关系进行建模。它由一组节点一组边组成。节点表示单个对象,而边表示这些对象之间的关系。注意:可能在不同的文献中节点也被称作顶点,它们指同一个意思。
  如果图中的边可以通过双向遍历,则是无向图(undirected),如果只能通过一个方向进行遍历,则是有向图(undirected)
在这里插入图片描述
并非图的所有节点都需要与其他节点连接。如果可以从图中的每个节点 访问其他任何的节点,我们称该图为连接图(connected),但有时你通过一些几点无法访问其他节点,那这个图就是未连接图(disconnected)。常见的误解是图的节点之间都必须连接,事实上,图可以不包含边,只有节点:
在这里插入图片描述
从实现的角度来看,在定义好节点之后,我们需要定义是边缘的权重(weights)。它是分配给边缘的数值,描述了遍历该边缘的成本。边的权重越小,遍历它的成本就越低。基于此,将权重分配给边缘的图称为加权图
在这里插入图片描述

2 图的三种存储方式

  一般来说,为了更简单的实现,任何给定图的节点都用数字(从零开始)标记,如果需要字符的方式进行定义节点名称,可用字典的方式进行转换。我将使用以下加权有向图作为后面部分中的示例:

在这里插入图片描述
之所以选择加权有向图作为示例,因为它说明了大多数实现的细微差别。一般来说,加权图和未加权图之间的切换非常简单。在有向图和无向图之间切换也是一件非常容易的事情。如果需要,我们将在以下部分中介绍这些主题中的每一个。

阅读全文 »

242. 有效的字母异位词

  给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:

1
2
输入: s = "anagram", t = "nagaram"
输出: true

示例二:

1
2
输入: s = "rat", t = "car"
输出: false
阅读全文 »