AI
文章平均质量分 87
AI
JunanP
这个作者很懒,什么都没留下…
展开
-
(英文)零知识证明 Zero-Knowledge Proofs
(英文)零知识证明 Zero-Knowledge Proofs. Machine learning has become increasingly prominent and is widely used in various applications in practice.原创 2022-10-07 22:40:58 · 402 阅读 · 0 评论 -
(英文)不同版本井字棋的不败策略
好久没有更新博客了,昨天生日+收到了cmu的offer,打开csdn正直国庆节有一个发勋章的活动,就打算把之前在一个cmu线上项目里我写的报告搬运过来(翻译成中文实在是太麻烦了哈哈哈),这篇文章主要就是写了如果我们先手的情况下,在不同版本的井字棋规则中如何保持不败。三种版本分别是正常Normal版本(三连者胜),Misere版本(三连者败)以及reverse misere版本(三连者败,同时双方都用同一种棋子),英文写的比较多但其实策略还是很简单的,供大家参考~原创 2022-10-03 11:08:42 · 2458 阅读 · 0 评论 -
Spark Hive实现基于协同过滤的电影推荐(MovieLens数据集)
这篇文章记录一下我之前做过的通过Spark与Hive实现的基于协调过滤的电影推荐。这篇文章只能提供算法、思路和过程记录,并没有完整的代码,仅尽量全面地记录过程细节方便参考。 数据集是从下面这个地址下载的,数据集主要内容是关于用户对电影的评分、评价等。免费数据集下载(很全面)_浅笑古今的博客-CSDN博客_数据集下载网站图1.1 数据获取我选取的几个数据集表格如下:图1.2 数据表格图1.3 rating表图1.4 movies表图1.5 tags表图1.6 genome-tags表图1.7 genome-原创 2022-07-10 14:05:39 · 3911 阅读 · 2 评论 -
关于图灵测试和中文屋Chinese room的理解
今天想分享一个人工智能中的中文屋论证(也叫汉字屋,Chinese room)。什么是中文屋论证呢,我们知道图灵测试是判断是机器否是人工智能的公认标准。我先说图灵测试,知道了图灵测试就很好理解汉子屋论证了。 图灵测试非常简单,就是图灵提出来的,判断一个机器是不是具有智能,就是在你和机器对话以后(前提是你不知道他是机器),你分辨不出来他是真人还是机器——如果你无法判断,就说明这个机器可以算做人工智能。图灵测试得到了很多人的认可。所以往后很多人工智能领域的研究,都是朝着这个目标而努力。 后有个人,叫赛尔,他觉原创 2022-06-30 12:48:05 · 3599 阅读 · 0 评论 -
K-means聚类原理实现 优缺点 轮廓系数 调优Canopy算法
Kmeans聚类是我最早接触的,也是最简单的机器学习聚类算法了。它是一种无监督学习算法。 还是先简单过一下Kmeans聚类的过程吧。不像模像样地罗列个一二三四,直接口述一下过程就好:比如我们要对二维坐标下一堆散列的点进行Kmeans聚类,我们要提前指定K的值,然后随机选择k个点作为k个聚类中心。此时我们计算其他所有的点和这k个点的距离,这些点离哪个聚类中心近就被归为哪一类;当所有点都被归好类后,我们重新计算每个类的中心。然后再重复上面的操作(根据中心归类,计算新中心,根据中心归类,计算新中心……)当聚类中原创 2022-06-10 17:36:02 · 2210 阅读 · 1 评论 -
密度聚类(CFDP)原理与实现
密度聚类,也被称为CFDP(Clustering by fast search and find of density peaksd)。 密度聚类的作用和Kmeans聚类差不多,可以将一堆数据分成若干类。“密度聚类”,顾名思义其实就是根据点的密度进行归类,比如说某一处点特别密集,那么这一块会偏向归为一类。这篇文章就具体整理一下密度聚类的原理与实现。假设在一个二维平面中有若干个点,我们想要对这些点进行聚类,那么密度聚类的过程如下: 对于每一个点,我们需要计算这个点的“局部密度”与“局部距离”这两个变量。局原创 2022-06-01 11:18:49 · 4199 阅读 · 2 评论 -
PCA降维原理 操作步骤与优缺点
PCA全称是Principal Component Analysis,即主成分分析。它主要是以“提取出特征的主要成分”这一方式来实现降维的。 介绍PCA的大体思想,先抛开一些原理公式,如上图所示,原来是三维的数据,通过分析找出两个主成分PC1和PC2,那么直接在这两个主成分的方向上就可以形成一个平面,这样就可以把我们三位的样本点投射到这一个平面上(如右图)。那么此时的PC1和PC2都不单单是我们的其中某一维特征,而是各个特征通过某种线性变化的组合结果。这就是PCA降维宏观上的效果。...原创 2022-05-30 21:20:49 · 29798 阅读 · 6 评论 -
图像风格迁移 CycleGAN原理
CycleGAN是一种很方便使用的用于进行图像风格转换的模型。它的一大优势就在于不需要成对的数据集就可以进行训练。比如我们只需要随便一大堆真人图像和随便另一大堆动漫图像,就可以训练出这两类风格互相转换的模型。 CycleGAN进行风格转换的原理是这样的:在CycleGAN模型中有两个生成器和两个判别器。如下图所示,生成器G能够实现X域到Y域的转换,判别器Dy可以判断输入图像是否是符合Y域的图像;生成器F能实现Y域到X域的转换,判别器Dx可以判断输入图像是否是符合X域的图像。 Cycl....原创 2022-05-24 12:17:51 · 8710 阅读 · 1 评论 -
StyleGAN生成模型
Stylegan的一个非常实用的人脸生成模型,它可以通过控制参数来控制人脸生成的样式,包括五官、发型乃至人种肤色。这篇文章大致总结一下Stylegan的一些原理和要点。 下图(右边)是stylegan生成器的模型结构:映射网络Mapping Network 从上图可以看到,传统的生成器的输入就是直接用高斯分布下512维的随机向量。而Stylegan中使用了8层全连接网络Mapping network来进一步处理输入,将它映射到另一个512维,并未改变其维度。此外,...原创 2022-04-15 16:14:24 · 2249 阅读 · 0 评论 -
图像风格迁移中的AdaIN,LIN,AdaLIN
在上篇(关于归一化BN IN LN GN相关梳理_TranSad的博客-CSDN博客)整理过IN,LN,GN等归一化操作。但还有一些操作名词和它们密切相关,如AdaIN,LIN,AdaLIN等,因为它们主要是出现在图像风格迁移任务中,所以这篇单独拿出来讲一下这几个名词。AdaIN首先回顾一下IN: 通过上篇我们已经知道IN是对于特征图的每一个通道的H、W求均值和标准差,IN的示意图和公式回顾如下: 我们的IN在进行初步“减均值比标准差”操作过后,还需要通过γ和β来进行线...原创 2022-04-09 12:52:45 · 5995 阅读 · 1 评论 -
正规方程法(Normal Equation)原理以及与梯度下降法的区别
具体θ该怎么算呢,下面用一个具体的房价预测例子,来更加清晰地描述X和y以及θ的关系形式,并且引出另一种求正规方程法结论的方式。假设它只有一个参数θ1,我们通过下图中公式(梯度下降法)中的方法,就可以找到一个局部或者是全局最优解。中,我们已知要想得到theta,只需要左右两边都乘以X的逆矩阵即可,但大多数情况下X不一定是方阵,不一定有逆矩阵,于是我们先都同时乘以X的转置矩阵,让其成为方阵。这种思路的本质就是我们要求一个最优的θ,可以直接先假设Xθ=y,从而逆推出θ来。这样,正规方程法的思想就讲完了。.....原创 2022-07-25 10:03:27 · 1169 阅读 · 1 评论 -
关于归一化BN IN LN GN相关梳理
原来写过BN(Batch-Normal)在全连接层当中的使用。在更多情况下,我们处理图像的特征图、特征层时也会用到归一化操作,其中就包括BN,也包括LN,IN以及它们的变式等。这篇来整理一下在卷积池化过程当中,对于特征图feature map的各类归一化方法。 关于BN的具体计算公式、优势和特点之类的还是参考上篇写过的(BN批量归一化操作_TranSad的博客-CSDN博客_bn批量归一化),这篇我还是侧重于整理不同归一化方法在特征图上的计算方式——也就是每个方法到底是归一化哪部分,归一化时特征图...原创 2022-04-07 20:40:42 · 1756 阅读 · 5 评论 -
Inception模块 GooLeNet网络
GoogLeNet 这篇文章打算简单总结一下GoogLeNet网络,其网络结构如下图所示。 我放上面这张图只是为了方便我们大致了解一下它的结构。我知道这样肯定不太能看清每一层具体细节,因为可以发现,GoogLeNet看起来有非常多且复杂的结构,要是清晰地放在这篇文章里恐怕会占很多篇幅,所以具体、清晰的GoogleNet图可以看这里。 与VGG、AlexNet等卷积神经网络相比,GoogLeNet绝对是我们见过的层数最多的网络了,它的网络层数有超过100层。Inception...原创 2022-03-19 19:53:00 · 6010 阅读 · 1 评论 -
BN批量归一化操作
BN(Batch-Normal)批量归一化是一个非常常见的步骤了,很多卷积神经网络都使用了批量归一化。 先回顾一下传统的的神经网络前向传播的过程,之前在这篇文章里详细描述过全连接神经网络的输入输出尺寸变化。 通过这个基础铺垫我们知道,对于神经网络中的一层,每输入一条数据可以得到一条结果, 而实际上我们训练的时候大多数使用mini-batch,也就是一个batch一个batch地训练,所以数据会有多条,此时对于神经网络中的某一层,输入数据为, 输出数据为。 其中x[1]就...原创 2022-03-04 00:09:47 · 3641 阅读 · 2 评论 -
ResNet网络 残差块的作用
ResNet简单介绍 ResNet是15年提出的经典网络了。在ResNet提出之前,人们发现当模型层数提升到一定程度后,再增加层数就不再能提升模型效果了——这就导致深度学习网络看似出现了瓶颈,通过增加层数来提升效果的方式似乎已经到头了。ResNet解决了这一问题。 ResNet的核心思想就是引入了残差边。即一条直接从输入添加到输出的边。 这样做有什么用处呢?可以这样理解:假如新加的这些层的学习效果非常差,那我们就可以通过一条残差边将这一部分直接“跳过”。实现这一目的很简单,将这些层的权...原创 2022-02-28 19:18:39 · 25810 阅读 · 9 评论 -
1×1卷积的作用 NiN模型中的1×1卷积
1*1的卷积 原来看面经的时候经常看到这么个问题,问的是关于1*1卷积的好处和特点之类的。1*1的卷积,顾名思义就是用大小为1*1的卷积核去做卷积,但也仅仅是长宽为1,卷积核的通道数不做限制。 通过1*1的卷积,每次只看一个像素点里多个通道的信息,不会识别一个通道里面的其他空间信息。因此1*1卷积侧重于融合一个像素点里3个通道(假如通道是3)的信息,对同一个像素点的不同通道值进行加权求和。 经常有讲解说“可以把1*1的卷积看作全连接层”。这个如何理解呢? 如图,假设输入图像宽w...原创 2022-02-26 22:58:10 · 3395 阅读 · 4 评论 -
LeNet、AlexNet、VGG卷积神经网络
对卷积和池化过程有了基本认识之后,这篇文章梳理LeNet、AlexNet以及VGG这三个经典的卷积神经网络,并通过代码实现其网络结构来加深理解。LeNet LeNet是最早发布的卷积神经网络之一了,LeNet是最早用来处理手写字体识别任务的网络,是非常简单而又经典。一般来说手写字体识别传入的图像是28*28的,但这里一开始先进行了padding=2的填充再卷积,所以下面图中input是32*32,这一点不同理解即可。对于每一步卷积以及池化(图中Subsampling降采样)我都做了标记,其具体...原创 2022-02-24 19:44:31 · 2290 阅读 · 0 评论 -
卷积与池化过程维度尺寸变化与一些名词整理
之前整理过全连接层的前向传播过程中一些权重参数的维度。这篇文章整理一下带有卷积与池化的神经网络。还是直接给一个例子,从例子出发把各个方面梳理一下。 以AlexNet为例(如下图):卷积 卷积的作用在于提取特征。可以用不同的卷积核提取不同层次的特征 一般用到卷积和池化的网络都是用于图像任务,我们的输入一般就是一个三通道图像,比如上图中输入图像的尺寸为227*227*3。 在上图也就是第一步卷积中,对于输入尺寸为227*227*3的图像,虽然图中写了卷积核的尺寸是11*1...原创 2022-02-22 23:59:38 · 4708 阅读 · 1 评论 -
神经网络前向传播 w的维度与含义
我们都知道神经网络中每一个隐层都有参数w和b,输入x首先要乘以w再加上b,最后传入激活函数就会得到这个隐层的输出。——但是,具体w是什么形状、它和x怎么乘、加上的b是在哪里之类的一直不是很清晰,因为在一些算法讲义里这一块一讲起来就容易用各种符号,看起来很复杂(虽然它并不难),而且这方面细节也并不耽误我们去定义和使用神经网络,所以就似懂非懂了。 但后来在学习推荐系统、word2vector之类的时候,就经常得用到训练好的权重,所以清楚其维度与意义是非常重要的。 以一个简单的神经网络来举例子(如...原创 2022-02-21 22:58:10 · 3378 阅读 · 2 评论 -
HiveSQL总结:窗口函数,表连接,基础函数等
前面有一篇文章大概讲解了一下Hive的基本概念,其实Hive的本质就是通过写SQL语句来运行MapReduce操作,因此作为Hive使用者,HiveSQL的使用就对我们非常重要了。HiveSQL其实也是写SQL,只不过它与传统sql有以下几个方面的区别:可以看到,HSQ具有与生俱来的的处理大数据的能力,因为它是在MapReduce上执行的。Hive提供的字段类型有这些:这些字段其实经常使用的就个别几个,就简单做个了解即可...原创 2021-10-02 13:09:02 · 488 阅读 · 0 评论 -
HDFS读写数据过程
HDFS的读写流程HDFS读流程这个图有点别扭,客户端Client放在了右边,不过无伤大雅。客户端要读取数据,首先是向client发送请求,告诉它要读取某一文件,客户端接到请求后,返回相应的元数据信息。获取到元数据信息后,客户端通过FSDataInputStream依次读取各个datanode上的block的内容,然后拼接起来后返回结果。FSDataInputStream是HDFS中常用的IO操作之一,它不是标准的java.io类对象,这个类是继承了...原创 2021-09-28 09:46:51 · 120 阅读 · 0 评论 -
Hive基础概念与数据导入导出
Hive是什么Hive 是 Hadoop 家族中一款数据仓库产品,Hive 最大的特点就是提供了类 SQL 的语法,封装了底层的 MapReduce 过程,让有 SQL 基础的业务人员,也可以通过SQL直接利用 Hadoop 进行大数据的操作。像我一开始学习MapReduce的时候,就是通过一个个Java小demo去学习它们的原理和过程,要通过java去实现一些特定的MR过程对于当时Java用得不太多的我来说非常不友好。直到Hive的出现让这些变得简单了起来,我们大可以放心的去用SQL实...原创 2021-09-27 18:07:55 · 293 阅读 · 0 评论 -
HDFS基础概念
HDFS文件系统HDFS全拼Hadoop Distributed File System即Hadoop的分布式文件系统,它其实就是以文件块(block)的形式来存储文件。在HDFS中,文件被切分为固定大小的数据块,数据块大小默认为64M(也可以设置成其它大小),如果文件大小未超过64M,也会单独存在一个block中。因此当一个文件进入到HDFS中,它会被按大小切分为若干个block,存储在不同的节点上。默认情况下每个block有三个副本。这些副本会存储在哪呢,假如有...原创 2021-09-27 16:21:15 · 170 阅读 · 0 评论