- 博客(43)
- 收藏
- 关注
原创 【机器学习】从RNN到Attention 下篇 Transformer与Self-Attention
在上一篇【机器学习】从RNN到Attention 中篇 从Seq2Seq到Attention in Seq2Seq中我们介绍了基于RNN结构的Attention机制,Attention机制通过encoder和注意力权重可以观察到全局信息,从而较好地解决了长期依赖的问题,但是RNN的结构本身的输入依赖于前一时刻模型的输出,因此无法并行化。既然Attention机制本身就具有捕捉全局信息的能力,那么我...
2019-09-01 12:16:35 1560
原创 【机器学习】从RNN到Attention 中篇 从Seq2Seq到Attention in Seq2Seq
变长输出模型——Seq2Seq在上一篇【机器学习】从RNN到Attention上篇 循环神经网络RNN,门控循环神经网络LSTM中,我们的建模基础是通过一串历史的时间序列x1,x2,.....,xtx_1,x_2,.....,x_tx1,x2,.....,xt,预测下一时刻的时间序列xt+1x_{t+1}xt+1,即输出为1一个数据。如下图所示:这类模型通常可以用来解决时间序列预测,...
2019-06-30 13:06:49 720
原创 【机器学习】从RNN到Attention上篇 循环神经网络RNN,门控循环神经网络LSTM
为什么我们需要RNN对于一个时间序列问题,已知f(x1),f(x2),f(x3),....,f(xt−1)f(x_1),f(x_2),f(x_3),....,f(x_{t-1})f(x1),f(x2),f(x3),....,f(xt−1),求解f(xt∣x1,x2,....,xt−1)f(x_t|x_{1},x_2,....,x_{t-1})f(xt∣x1,x2,....,xt−1...
2019-06-29 14:49:02 711
原创 【机器学习】—— 各种梯度下降的变形momentum,adagrad,rmsprop,adam分别解决了什么问题
MomentumMomentum的公式表达设时间步ttt的自变量为xt\boldsymbol{x}_txt,学习率为ηt\eta_tηt。在t0t_0t0时刻,速度变量v0=0\boldsymbol{v}_0=0v0=0,在时间步t>0t>0t>0,Momentum关于速度变量vt=0\boldsymbol{v}_t=0vt=0和自变量xt\bold...
2019-06-21 08:04:26 698
原创 python调用redis批量写入并设置过期时间
redis可以通过mset批量写入key,value值,但是如果对于写入后的key,value值一个一个设置过期时间的话速度较慢,最近发现了一个可以同时完成批量写入并设置过期时间的方法,记录一下,希望对他人有所帮助。with redis_client.pipeline(transaction=False) as p: for key,val in zip(keys,values): p.s...
2019-05-14 22:49:34 5895
原创 【机器学习】——为什么softmax搭配cross entropy是解决分类问题的通用方案?
众所周知,softmax+cross entropy是在线性模型、神经网络等模型中解决分类问题的通用方案,但是为什么选择这种方案呢?它相对于其他方案有什么优势?笔者一直也困惑不解,最近浏览了一些资料,有一些小小心得,希望大家指正~损失函数:交叉熵Cross Entropy我们可以从三个角度来理解cross entropy的物理意义从实例上直观理解我们首先来看Cross Entropy 的公...
2019-04-18 22:52:53 1056 3
原创 如何在pyspark的udf中传入数据参数
如何在pyspark的udf中传入数据参数问题定义解决方案问题定义我希望在pyspark中使用withColumn函数对dataframe的某一列进行udf操作,需要传入一个字典,形如:def func_is_holiday(holiday_dict,date): return holiday_dict[date]df = df.withColumn("is_holiday", fun...
2019-01-16 18:34:06 5965 1
原创 【机器学习】——偏差方差,欠拟合过拟合
本系列文章由@ 努力学挖掘机的李某某出品,转载请注明出处。文章链接:http://blog.csdn.net/qq_30911665 虽然读研期间做的内容和机器学习相关,但是17年秋招时发现自己对于机器学习深度学习的理解不够深入,而自己在学习的过程中发现,通过分享讲解知识的方式更有助于自己对于知识的巩固和了解,于是萌生了写一个教程的想法。本文尽量采取简单易懂的方式叙述,顺便重新学习一下整个知...
2018-03-13 11:50:02 2544
原创 【机器学习】——学习率,梯度下降法,批梯度下降,归一化
本系列文章由@ 努力学挖掘机的李某某出品,转载请注明出处。文章链接:http://blog.csdn.net/qq_30911665 虽然读研期间做的内容和机器学习相关,但是17年秋招时发现自己对于机器学习深度学习的理解不够深入,而自己在学习的过程中发现,通过分享讲解知识的方式更有助于自己对于知识的巩固和了解,于是萌生了写一个教程的想法。本文尽量采取简单易懂的方式叙述,顺便重新学习一下整个知...
2018-03-12 19:44:36 4103 2
原创 【机器学习】—— 什么是机器学习
什么是机器学习(Machine Learning)Machine Learning这个词,我第一次听到感觉就是怪怪的,其实我们可以把它倒过来理解,“LearningMachine” ,好吧,似乎还是怪怪的, 那么我们把Machine换成Algorithm就好理解了,“Learning Algorithm”,没错,就是“学习算法”。机器学习就是具有学习能力的算法。那么接...
2018-01-19 18:02:17 2444
原创 Kruskal算法求最小生成树的c++代码实现
kruskal算法是一类适用于稀疏图的最小生成树算法,主要思想也很简单,将所有的边分为 属于生成树的边S和不属于的V-S ,每次在V-S中找一个权值最小的边放入S中,同时该边不构成回路,关于是否构成回路,可以使用并查集来判断。比如上图中假如{1,2} , {1,3}都已经属于,那么unionSet[3] = unionSet[2] = unionSet[1] = 1;这时如果想加入{
2017-09-29 15:52:49 3478
原创 Prim算法求最小生成树的c++代码实现
Prim算法是求解最小生成树的常用方法,它的思想非常简单,讲所有的点集合V分为 已经放入最小生成树集合的S和未放入的V-S,每次在V-S中选择一个距离S最近的点放入到S中,直到所有的点都放入S。就是很简单的贪心策略,不过可以证明是全局最优,prim算法对于稠密图效果比较好,具体步骤可以看点击打开链接,讲解的很清楚。对于上面的图,显然最小生成树的结果应该是{1,3,6,2,4,5}或者{1,
2017-09-29 11:07:38 11418
原创 Djkstra最短路径算法的c++代码实现
Djkstra算法是求解单源(起始点固定)最短路径问题的一种经典方法,它采用了贪心策略(其实我觉得也是动态规划),可以求得图中的一个点到其他所有点的距离,计算复杂度是 O(E|V|),如果采用最小堆优化可以达到O(ElogV )。算法的整体思想是将顶点分成两类:已经构成最短路的点的集合V1和没有构成最短路的点的集合V2。我们将dist[i]设置为第 i个点到V1的距离,每次将V2中取距离V1集合最
2017-09-29 09:44:09 3184
原创 ResNet 《Deep Residual Learning for Image Recognition》 阅读笔记
1. Introduction首先作者说明现在很多效果很好的网络都采用了比较深的网络结构,那么想要获得性能更好的网络,是否只需要叠加层数就行了呢?作者的实验结果如下这个问题的一个阻碍就是臭名昭著的梯度爆炸和梯度消失问题会导致无法收敛,但是这个问题通过标准化的初始化和BN这样的方法基本可以解决。虽然可以收敛,但是还有一个问题叫degradation,就是当网络变深,准确率
2017-09-14 14:34:56 2424
原创 论文阅读《Edge Detection Using Convolutional Neural Network》
Abstract:提出了一个基于CNN的边缘检测算法,可以直接得到图像块是否为边缘的预测。Introduction:1.传统的方法:基于梯度,假设不同的物体之间存在较大的梯度,相同物体内的梯度较小,但是现实情况下很多时候这个假设不成立,因此考虑用学习的方法。2.之前的学习方法:学习能力不够,无法直接根据原始图像块进行边缘检测,需要进行许多颜色和梯度的特征提取来表征原图像,很复杂而且
2017-09-14 11:46:10 2743
原创 VGGNet 《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》学习笔记
1.INTRODUCTION作者开篇就说明了VGG的特点——深度, 为啥可以这么深呢?因为卷积核的size小!2.卷积结构输入是224*224的RGB图像,预处理是对于每个RGB值减掉了训练集的均值。卷积核的大小:3*3,能够表达上/下, 左/右,中心这些概念的最小尺寸。作者也在其中一种网络中使用了1*1尺寸的卷积核,可以看做是一种线性的变换。stride=1, pad
2017-09-07 15:28:23 2183 1
原创 AlexNet 《ImageNet Classification with Deep Convolutional Neural Networks》学习笔记
AlexNet的主要结构总共包含8层学习层:5层卷积层和三层全连接层下面介绍了几个重要的网络结构:1.ReLU Nonlinearity相比较于f(x) = tanh(x) 或者 f(x) = (1 + e^-x)^-1这样的饱和非线性(这两个函数在 -1,1 和 0,1附近接近饱和),对于随机梯度下降的方法,f(x) = max(0; x) 也就是ReLU要比两者
2017-09-06 18:10:10 2539
原创 阿里秋招编程题
1.现在城市有N个路口,每个路口有自己的编号,从0到N-1,每个路口还有自己的交通控制信号,例如0,3表示0号路口的交通信号每3个时刻变化一次,即0到3时刻0号路口允许通过,3到6时刻不允许通过,而6到9时刻又允许通过;以此类推,所有路口的允许通行都从时刻0开始。同时城市中存在M条道路将这N个路口相连接起来,确保从一个路口到另一个路口都可达,每条路由两个端点加上通行所需要的时间表示。现在给定起始路
2017-08-25 22:31:04 565
原创 归并排序的c++代码实现
归并排序归并排序的思想:将数组一分为二,分别对左右两个数组进行排序,然后对左右两个有序数组归并成一个有序数组时间复杂度:O(nlogn)自顶向下的代码templatevoid __merge(T arr[], int l, int mid, int r){ int len_left = mid - l + 1; int len_right = r - m
2017-08-14 19:13:15 771
原创 简单排序算法:冒泡排序,选择排序和插入排序的c++实现
所有代码的实现采用了模板类,如果对模板类不熟悉,可以把T换成 int一、冒泡排序冒泡排序的思想:相邻元素两两比较,如果逆序则交换冒泡排序的实现思路:i 从数组的第二个下标开始循环(即以下标为1开始),每次从最后一个元素开始,依次与前一个元素对比交换,每循环一次,则前i个元素为有序的。优点:冒泡排序在无下标的几个元素排序时,比其他排序算法更直接(比如三个数,找出其中中间大小的
2017-08-14 14:25:49 532
原创 阿里校招内推电话面
下午接到阿里的电话面试,总共面了大概有50分钟,记录一下主要内容。首先先是自我介绍,我主要介绍了一下自己的实习和研究方向。然后是问项目,让我着重介绍其中一个项目,我介绍了一个实习的时候做的图像识别+双目测距的项目,然后就是各种细节,识别了什么,怎么做的识别,双目测距的原理之类的。其中有一个问题问我如果在双目测距中,物体不在两个摄像头的中心位置怎么办。我有点蒙,没有回答上来,想了想好像是
2017-08-08 18:25:33 576
原创 ubuntu 16.04 安装 xgboost python运行环境
最近在做天池的比赛,需要用到xgboost,于是记录一下安装过程。从github上下载到本地git clone --recursive https://github.com/dmlc/xgboost注意一定要加 --recursive 不然后续操作会报错cd xgboostmake -j4结果如下cd python-package/sudo pyth
2017-07-30 20:57:38 971
原创 快速排序的c++代码实现
快速排序的基本思想就是选择一个pivot,将小于pivot的值都放在左边,将大于pivot的值都放在右边,然后递归,为了简单pivot取最左边的值void quickSort(int a[], int left, int right){ if(left >= right) return; int pivot = a[left]; //选择最左边的值作为pivot int l
2017-07-18 16:21:28 511
原创 c++中指针的引用 *&作为参数传递
我们都知道c++中的参数传递是值传递,想要通过函数修改形参,一般使用指针或者引用。那么有时候我们对于传入的指针地址希望做修改怎么办呢?今天在写一个树结构的题时碰到这个问题大概代码是void insert_array(TreeNode *&node, int *array, int left, int right){ if(left > right
2017-07-16 10:57:57 2187
原创 统计学习方法笔记, 第四章,朴素贝叶斯python实现
上一篇博客记录了朴素贝叶斯,本篇博客为实现,实现代码如下:from __future__ import division class Bayes: def __init__(self): self.X = None self.y = None self.x_dims = 0 self.unique_x =
2017-07-14 17:03:32 366
原创 统计学习方法笔记,第四章朴素贝叶斯法
朴素贝叶斯法基于贝叶斯定理和条件独立假设,是一种生成判别的方法,因为是生成概率分布模型,它的效率很高很快,且可适用小样本问题和样本不平衡问题。4.1 朴素贝叶斯法的学习与分类已知类集合为,对于一个输入的特征向量,我们的预测问题通常可以表示为求即求当输入向量时,分类结果y的概率最大的那一类。那么怎样求呢?我们考虑用贝叶斯定理那么问题就转化为求和那这俩又
2017-07-14 09:27:26 434
原创 kd树建立的python实现
本篇博客是参考李航的《统计学习方法》第三章3.3,使用python实现kd树的建立。kd树本质上就是平衡二叉树,只是注意要选择中位数作为节点即可class kdNode: def __init__(self, data = None, depth = 0,left = None, right= None): self.data = data self.d
2017-07-13 20:16:17 1247
原创 统计学习方法笔记,第三章,k近邻法
k近邻法的三要素:k值的选择,距离度量和分类决策规则分类规则一般都是多数表决k近邻法没有显式的训练过程3.1 k近邻算法主要思想:k个最近点多数表决,个数最多的类即为最后的分类。3.2 k近邻模型3.2.2距离度量常用的距离,对于两个点,距离定义为:3.2.3 k值的选择k太小:对于近邻的样本非常敏感,如果该样本为噪声就会出错。k太大
2017-07-13 09:39:06 254
原创 牛客网 二维数组中的查找python实现
思路:二维数组由上到下,由左到右递增,可以选取右上角或者左下角的元素a[row][col]与target进行比较,当target小于元素a[row][col]时,target必定在a[row][col]所在行的左边,当target大于元素a[row][col]时,target必定在a[row][col]所在列的下边代码实现:def Find( target, array):
2017-07-12 16:51:57 445
原创 统计学习方法笔记,第二章感知机的python代码实现
实现的比较粗糙,代码如下:class Perceptron: import numpy as np def __init__(self, w = 0, b = 0, lr = 1, epoch = 100): self.weight = w self.bias = b self.lr = lr #lr: l
2017-07-12 15:25:02 343
原创 统计学习方法笔记,第二章笔记, 感知机
2.1 感知机模型模型函数:其中感知机属于线性模型,因为其含有超平面将空间分为两个部分,位于超平面两侧的点分别是正、负两类。2.2 感知机的学习策略感知机模型的学习策略是让误分类的点到超平面的距离最小。那么误分类的点怎么求呢?我们已知对于一个点,如果被正确分类,那么 预测结果 与真实的分类 应该是同号的,即 或 ,所以当分类错误时,两者符号应该是相反的。因此
2017-07-12 10:33:05 321
原创 统计学习方法笔记,第一章,统计学系方法概论
这个博客系列是我复习李航博士的《统计学习方法》所做的笔记,其中一部分是笔记,一部分是自己的感悟和理解,可能有些理解不够准确,欢迎指正!1.1 统计学习(1)统计学习方法的三要素:模型、策略和算法,之后的章节对于每一种模型都是按照这三个角度进行分析(2)学习的定义:通过执行某个过程改进性能,而统计学习则是运用数据和统计的方法进行改进,通过统计方法对数据进行学习,改进模型的
2017-07-11 14:07:21 449
翻译 使用U-Net分割方法进行癌症诊断(教程翻译)
最近在做天池医疗AI大赛,看到一份不错的资料,想翻译一下做个记录,原链接点击打开链接原作者Jonathan Mulholland以下是
2017-07-04 20:00:11 47005 27
原创 POJ 1338 & UVA 136
思路:用2,3,5分别求积得到所有的丑数,再排序后求第n个#include#includeusing namespace std;const int maxN = 1500;int main(){ int a[maxN]; int pos = 0; for(int i = 1; i < 100; i*=2) for(int j = 1
2017-07-03 15:58:24 233
原创 POJ 2196 & ZOJ 2405 & UVA 3199
思路:进制转换,使用辗转相除法,由于只需要求和,因此不需要考虑余数逆序,直接相加即可#includeusing namespace std;int systemSum(int x, int base){ int sum = 0; while(x){ sum += (x % base); x /= base; } return sum;}int
2017-07-03 14:53:56 545
原创 POJ 1003 & UVA 2294
思路:先离线求得卡片数对应长度的数组,然后使用二分查找,注意c语言的abs()函数返回的是整数类型,要返回浮点数可以使用fabs函数#include#include#includeconst double delta= 1e-8;int binary_search(float input, float cards[], int maxNum){ int left = 0, rig
2017-07-03 14:21:53 471
原创 POJ 1005 & ZOJ 1049 & UVA 2363
思路:求出在x,y点的面积,除以每年的腐蚀面积,向上取整,使用ceil()函数 #include using namespace std;#define PI 3.141592653 int main(){ int test_num; cin >> test_num; double x,y; double area; int year;
2017-07-03 14:20:43 351
原创 ZOJ 2739 & UVA 3399
思路:先离线求出[2,10000]的所有素数,再从素数数组从前往后累加求和#include using namespace std;bool isPrime(int x){ if(2 >= x) return true; for(int i = 2; i < int(sqrt(double(x)))+1; i++) { if(0
2017-07-02 12:05:20 365
原创 POJ 1552 & ZOJ 1760 & UVA2787
思路:循环读取数字,根据标志终止,对每一组数字遍历两次#include using namespace std;int main(){ int a[16], count; cin >> a[0]; while(a[0] != -1){ int i = 0; while(a[i] != 0){ cin >>
2017-07-02 11:32:29 412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人