自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 问答 (1)
  • 收藏
  • 关注

原创 esp32+micropython蓝牙讲解

数字 M的四位表示 UUID 版本,当前规范有5个版本,M可选值为1, 2, 3, 4, 5。这5个版本使用不同算法,利用不同的信息来产生UUID,各版本有各自优势,适用于不同情景。UUID是一个 128 位无符号整数,通常使用十六进制字符串来表示,以连字号分隔的五组来显示,形式为 8-4-4-4-12,总共有 36个字符(即三十二个英数字母和四个连字号)。数字 N的一至四个最高有效位表示 UUID 变体( variant ),有固定的两位10xx因此只可能取值8, 9, a, b。

2023-10-06 20:56:08 3334 4

原创 ddp训练流程-pytorch教程

如果不同任务即使使用了同一个机器,即ip相同,也可以通过port来进行区分,可以看到192.168.1.2这台机器上跑了两个任务(这台机器有两个gpu,或者资源不够,用户就是想要指定两个进程来训练不同的任务),我们可以通过port来区分这两个任务,我们也可以使用一个不同的ip来区分,bert是192.168.1.2:5003,gpt是192.168.1.6:5003,端口一样,但是ip不一样,当然也可以直接ip+port都不相同。训练的过程中由于梯度共享的原因,所以每一次迭代梯度也是相同的。

2023-09-10 22:31:53 582 1

原创 机器学习面试:tfidf&BM25的理解与应用

TFIDF的应用分析某个元素在整体中的重要性,元素可以是类目,单词等TFIDF的理解给你一篇文章,该如何确定文章中哪些词是关键的呢?一个直接的想法是对整篇文章进行分词,统计每个词出现的次数按照次数进行排序,出现次数越多的词重要性越高import jiebafrom collections import Counterdoc=""""""words = jieba.cut(doc)tf = Counter(words)tf = tf.most_common()print(tf

2023-05-13 18:47:44 647

原创 跟着杰哥学强化学习:自定义格子世界

现在的动作是随机,我们可以手动来操作扫地机器人进行运动。

2023-04-29 22:47:55 169

原创 跟着杰哥学强化学习:q-learning的一些思考

下一个状态next_s的down是1,right是-1,up和left都是0,所以更新s的时候q(s,a=‘right’) = q(s,a=‘right’) + (reward + max q(next_s, a) - q(s,a=‘right’))=0+(0+1)=1,我们发现根据下一个状态,当前的状态的某个动作也都有值了。四周的价值反馈都是0,根本不知道该往哪个方向移动是有价值的,(up,down,left,right)的值都是0,按照greedy的方式就会一直选择up,然后越界复位,循环往复。

2023-04-29 19:29:58 560

原创 跟着杰哥学强化学习:多臂老虎机问题

现在有3台外观一模一样的老虎机,每个老虎机的赔率是不同的,摇动一次需要1块钱,现在给你100块钱,如何获取最大的收益。如果我们知道了每个老虎的赔率,那么只要选择收益最高的那个老虎机就可以了,但现在问题是并不知道每个老虎机的收益。为了简单,我们假设老虎机的收益服从正态分布我们没有办法找到老虎机,但是可以用python来进行模拟。

2023-04-29 19:22:52 901

原创 pygame入门教程-图像篇

可以看到返回的是一个surface。我们在创建一个窗口的时候返回的也是surface对象,所有想要显示的图像都需要加载到主窗口也就是screen上。pygame提供了一个blit函数可以将一个画布贴到另一个画布上source就是另一个surface,dest则是绘制在screen的坐标位置(x,y),area则是想要绘制图片的区域大小。

2023-04-02 21:49:48 2579

原创 pygame入门教程-绘制篇

由于是手动点击的,因此很难正好落在交叉点,可以判断点击位置距离哪个交叉点最近。我们先把所有的交叉的位置找出来。加入鼠标点击事件,点击左键就落子,即绘制一个圆。五子棋很简单,先绘制网格线,然后绘制圆就行了。

2023-04-01 22:19:09 297

原创 pygame入门教程-基础篇

我们先启动一个窗口我们通过设置了一个窗口,并且返回了一个screen的变量,这个变量的类型是,也就是一个画布。我们基于这个画布来作画,例如加载一个图片到这个画布上,或者绘制一个圆。

2023-04-01 21:37:38 1246

原创 Embedding-based Retrieval in Facebook Search

搜索引擎帮助用户在海量的信息中进行检索,google和bing开发了各种技术来提高搜索质量。由于语义和意图非常难以表征,因此当前的搜索大多依赖于term匹配方法,也就是关键字匹配。语义匹配:解决于查询文本不完全匹配但是可以满足用户搜索意图所需要的结果深度学习在语音,机器视觉和自然语言理解中取得了重大的进展。embedding即表征被证明是一种有效的方法。本质上来说embedding是一种将ids的稀疏向量表征为密集向量的方法,也被称为语义嵌入。

2023-03-04 22:15:25 1001

原创 hive建表基础知识

Hive的数据都是存储在HDFS上的,默认有一个根目录,在。

2023-02-10 14:52:03 151

原创 BERT论文翻译

语言预训练模型已经被证明对很多NLP任务是有效的,包括自然语言推理和释义等句子级别的任务,以及命名实体识别和问答等token级别的任务。将预训的语言表示应用与下游任务的现有策略有两种:基于特征和微调。基于特征的方法:例如ELMo,使用特定的任务结构,预训练表示作为附加的特征。基于微调的方法:例如GPT,引入了最小的任务特定参数,并通过简单的微调了所有预训练参数来训练下游任务。这两种方法在预训练期间有相同的目标函数,都使用单向语言模型去学习通用语言表示。

2022-10-09 19:45:02 436

原创 机器学习面试:从马尔可夫链到MH采样

有一种动物,每天只会吃喝睡,在这三种状态之间来回切换。有一个好事者,立了个摄像头,监控这个动物的每一分钟状态变化做了大量的统计,得到了状态之间的转移概率,并且给出了一个状态转移的概率矩阵。有了这个概率转移矩阵,我们就可以知道下一时刻的状态分布了。假设现在的状态是吃,由于当前的状态是确定的,所以概率为1,初始状态的概率分布就为[1,0,0],那么下一时刻的概率分布是什么呢?这个很好计算,根据贝叶斯定律可得其实更准确的是P(St​)=∑P(St​∣St−1​)

2022-10-04 20:34:27 653

原创 python迭代器和可迭代对象

迭代器:实现__iter__和__next__两个魔法函数,可以使用for循环和next可迭代对象:只能实现__iter__函数,并且这个函数返回的是一个迭代器,可以使用for,由于没有实现__next__函数,所以不能使用next自定义可迭代数据:实现函数,有一个入参index,意味着我们可以通过索引访问,所以也就意味着需要保存较多的数据在内存中个人的一些见解老实讲,我觉得迭代器还是比较鸡肋的,为了计算下一个状态,需要保存上下文,然后通过处理得到新的状态。

2022-09-24 21:30:55 2291

原创 nlp小白教程:word2vec之数据预处理

word2vec的文章网上有非常的多,这里主要是讲代码的实现。

2022-09-17 22:53:49 1513

原创 递归:为运算表达式设计优先级

虽然有的子运算表达式比较长,也只不过多谢一个运算符号而已,况且还没有括号,那是非常的简单。但是我看了别人的代码之后,突然发现,一个运算表达式返回的是一个数组,那么子运算表达式的结果应该也是一个数组才对,而不应该是一个单一的数字。首先不说怎么做,如果是递归的话,子问题的返回是什么,肯定也是一个数组,因为子问题与原问题是结构是一致的。,即中间是一个运算符,左侧和右侧分别是一个运算表达式或者数字。原问题是给定一个运算表达式,返回一个数组,这个数组中是所有可能的运算结果。这个问题也是这样的,举个例子。...

2022-08-18 14:16:00 194

原创 递归:链表求和/反转字符串

每一对儿的节点处理都是一样的,并且不断的向后遍历,因此看到这个问题的时候可以用循环也可以用递归。有一点不同的是,子问题的入参需要预先处理,即。还有一点非常有意思,一般情况下,一个链表遍历到None的时候,就直接返回了,例如。拼接起来即可,但是这里却是不断的补充0元素,这样就可以把两个链表虚拟成一样长了。通常面对递归,我都会先思考子问题,然后根据子问题去求解原问题,这道题有两点不同。要短,因此肯定是先遍历完。,通常情况下只需要把。...

2022-08-16 10:38:04 532

原创 递归:判断一个数是否是2的幂

这种递归与我想的正好相反,我思考的是先假设子问题有解,然后根据子问题去求解原问题,也就是在。然后我就看了别人写的递归方法,更加的简单巧妙。如果sr返回的是true,那么res应该返回什么呢,举个例子分析,假如n=17,那么有。,说明子问题都不是2的幂次方,那么原问题肯定不是2的幂次方了,直接返回False即可。,我们知道了子问题的解,该如何去求原问题的解呢?既然子问题是2的幂次方了,即。n不断的缩小并且不断的重复操作,这不就是妥妥的递归吗。是n的幂次方,如果n也是2的幂次方,那么有。,否者不是2的幂次方。.

2022-08-16 08:57:33 1115

原创 递归:x的n次幂

这个跟汉诺塔的问题非常的相像, 我不知道如何把n个圆盘从A移到C,但是如果我把n-1一个圆盘能移动到B,那么就可以完成。就可以了,这样问题最后就会缩减到n=1也就是停止条件上,然后递归再进行返回,我们操作这个返回结果即可。我也不知道,反正就是根据这个递归公式不断递归就可以求解出来了。这个递归也非常有意思,同样是有点难以理解,我们求。转化成递归函数的形式就是。其实可以递归成两种情况。......

2022-08-16 08:57:12 2866

原创 递归:两两交换链表节点

首先假设子问题已经解决了,由于是两两交换节点,因此我们需要预留出两个节点出来才行,之前使用递归对链表求解的时候都是只需要操作head节点即可,但是这里要求两个节点交换,因此需要head和head.next两个节点,因此子问题的输入就是head.next.next了。...

2022-08-15 21:04:11 120 1

原创 递归:两个数组的交集

这个问题并不能使用递归解决,但是因为很像递归,我单独分析一下。假如我们子问题已经求出解了,现在的问题是如何把元素。合并到一起去,这个逻辑处理应该怎么做?所以这个问题并不好做。...

2022-08-15 19:09:13 98

原创 递归:合并两个有序链表

原问题是合并两个链表,当我们提取出最小值的时候,子问题就可以变成合并缩小规模后的两条链表,例如合并两个链表。的头节点,子问题就变成合并两个链表。,我们提取出当前最小值是。

2022-08-15 18:49:56 349

原创 递归:递归的理解与应用

从一个最最简单的例子出发,我们要对一个数组进行求和,一个想当然的方法就是直接进行遍历求和,我们看看能否考虑使用递归。递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。递归算法就是将原问题不断分解为规模缩小的子问题,然后递归调用方法来表示问题的解。(用同一个方法去解决规模不同的问题)递归思维是一种从下向上的思维方式,使用递归算法往往可以简化我们的代码,而且还帮我们解决了很复杂的问题。...........................

2022-08-07 00:38:14 846

原创 两数,三数之和

如果我们先确定一个数2,然后跟后面的2,3,5,7,11,13进行组合,当我们组合到11的时候2+11>13,那么我们还需要去跟更大的13去组合吗,显然是不需要的,所以我们可以直接加一个判断,跳过后面的数字。现在就回发现一个有趣的点了,2和11组合大于12,因此2不需要再跟13组合,那么第一层循环是3,还需要跟11和13组合吗,肯定也不需要了,也就是说,我们第二层循环的结尾不一定始终是n,而是可以不断往前推的。2+13>12,此时两个数的和大于目标值,我们移动右指针,这样可以让两个数的和小一点。...

2022-07-24 13:11:09 175

原创 递归:递推公式

上面的递推问题,本质都是不断减小问题规模,要求f(n)f(n)f(n),先求出较小规模的f(n−1),f(n//2)f(n−1),f(n//2)等等,所以,最重要的就是如何分析问题得到递推公式。httpshttps。

2022-07-21 23:03:44 546

原创 递归:快速排序,归并排序和堆排序

快速排序的思想非常的简单,随便找一个元素作为标兵,然后使用双指针分别从左右开始移动,可以看到快速排序其实就是不断进行交换的操作,操作完一轮之后,再对左右两侧的数据进行同样的操作,把一个大的问题转换成小的问题,所以快排用的就是递归算法。快排有两个点非常容易写错与标兵比对的时候包含了等号。这是因为数组中可能有很多数据是与标兵相同的,与标兵相同的元素其实放在左边和放在右边都是可以的,反正最后排序之后都会与标兵相邻。而且还可以避免陷入死循环。例如下面这个数组,如果不加等号的话,你会发现l和r都不会变动。最外层的

2022-06-25 22:24:44 294 1

原创 递归:深度优先搜索

二叉树的问题一般都是优先考虑递归的,我们想要求出一棵树的深度,当我们知道了左子树和右子树的深度的时候,那么root节点的深度就是左右子树最大的值加1depth(root)=max(depth(root.left),depth(root.right))+1depth(root)=max(depth(root.left),depth(root.right))+1depth(root)=max(depth(root.left),depth(root.right))+1很明显这也是一个递归的式子,所以直接使用递

2022-06-25 14:28:18 570 1

原创 动态规划:最长公共子串和最长公共子序列

给定两个字符串,求出最长的相同的子串,例如给定子串和,其中两个子串串中共有的最长子串就是这个字符串。同样,这道题一看就是动态规划,我们首先列出状态转移方程,假设两个字符串分别以为结尾的最长公共子串长度为,当时,,如果这两个字符不相等,也就是说以为结尾的这两个字符串就不是公共子串,此时最长公共子序列公共子序列不需要连续,因此,即使两个字符串不相等,也不会为0。当前两个字符不等,的话,那么长度最少也是,但这还不够,因为我们希望拿到之前的比较中尽可能大的长度。那么当前字符已经不相等的情况下,就应该把当前的字

2022-06-12 22:07:12 190

原创 动态规划:最长回文子串和子序列

动态规划

2022-06-11 16:31:21 121

原创 leetcode:动态规划模板

我们假设第n-2个月的时候有dp[n-2]只兔子,第n-1个月的时候有dp[n-1]个兔子,那么第n个月有多少只兔子呢?第n个月的兔子一定是有第n-1个月的兔子来的,所以至少有dp[n-1]个兔子,但是同时呢,出生两个月的兔子都会再生一个兔子。出生两个月的兔子有多少了呢?往前推两个月的兔子就是当前出生两个月的兔子(废话文学),所以出生了两个月的兔子数量有dp[n-2]个,这些兔子会已经包含在了dp[n-1]之中,但是他们还会生dp[n-2]只兔子,所以。两个月前的兔子都会生一只兔子,那么两个月前有多少只兔子

2022-06-08 12:19:03 60

原创 tensorflow代码学习:sigmoid_cross_entropy_with_logits

import numpy as npimport tensorflow as tf def sigmoid(x): return 1.0/(1+np.exp(-x)) labels=np.array([[1.,0.,0.],[0.,1.,0.],[0.,0.,1.],[0.,1.,0.]])logits=np.array([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.],[1.,3.,7.]])y_pred = sigmoid(logits)# 说正负样本不太合适.

2022-05-18 17:34:39 318

原创 推荐算法论文:DIN网络

简介将用户各个维度的稀疏特征压缩成embedding向量,然后将这些向量拼接在一起作为用户向量,这会导致无论输入什么样的广告,用户向量都不变,就很难捕捉到用户在各个广告上的偏好。DSSM模型的时候,用户向量不就是固定的吗,然后输入不同ad的时候,去计算相似度,deepmatch也是的,为什么说不能很好补货用户偏好呢,而且我们可以获取用户的实时行为,每时每刻用户的embedding应该是不一样的吧,还是说这样不一致会导致模型不收敛,所以才要求用户向量必须是稳定的???介绍用户的历史行为被压缩到同

2022-05-16 17:43:52 196

原创 推荐系统:I2I召回

1. 基准i2i召回只需要考虑两个点如何表示一个商品item相似度量函数是什么1. 常规的Item-CF所有点击的用户拼接成一个向量,以此来表示一个item。假如我们有100个用户,每个用户是否点击过这个商品可以编码为一个向量user-itemu1u2u3…u100i110001i210101i300101度量函数使用cosin函数,一个优点是分母部分可以抑制热度商品,缓解哈利波特问题。sim(I1,I2)=

2022-05-09 22:38:36 655

原创 机器学习:交叉熵损失函数

交叉熵损失函数给定一个样本xxx,预测1的概率为p(y=1∣x)p(y=1|x)p(y=1∣x),预测为0的概率为1−p(y=1∣x)1-p(y=1|x)1−p(y=1∣x)。p(y)={yy^=11−yy^=0p(y)=\begin{cases}y & \hat{y}=1 \\1-y& \hat{y}=0\end{cases}p(y)={y1−y​y^​=1y^​=0​最终得到一个样本的概率为p(yi)=yi^yi∗(1−yi^)1−yip(y_i)=\hat{y_i}^{y

2022-05-05 20:24:11 747

原创 推荐算法论文:Deep Neural Networks for YouTube Recommendations

吹牛逼按照经典的信息检索方式讲推荐系统划分为两部分深度候选生成模型深度排序模型1. 介绍youtube推荐系统面临的三个问题规模:当前的推荐算法可以很好的解决数据量较小的问题,但是针对YouTube这种量级的用户和物料,必须使用专业的分布式训练平台。新鲜度:youtube每天会产生非常多的新内容,推荐系统需要有足够的相应能力来处理新内容,做好新物料的探索和应用噪声:由于稀疏性和各种不可观察的外部因素,YouTube 上的历史用户行为本质上难以预测。并且没有用户的显示反馈,所以需要进行隐

2022-05-04 15:57:43 705

原创 推荐算法论文:Neural Collaborative Filtering

吹牛逼用户和商品的隐向量依然通过MF(矩阵分解)的方式来获取,深度网络仅仅用来抽取side信息,例如商品的文本,语音?等提出了NCF框架,NCF可以衍生出矩阵分解,如果使用神经网络可以进一步增强模型的非线性能力提出了一个假设,多层神经网络可以学习user-item的交叉函数1.介绍第一段推荐系统可以有效缓解信息过载,当前已经被应用在,电商,新闻和社交媒体,核心是可以通过用户历史信息建立协同过滤模型MF可以将用户和商品映射到统一的隐向量空间,使用隐向量表征用户和商品,这样直接可以使用两个隐

2022-04-28 15:01:33 349

原创 机器学习面试:FM中Embeding的理解

1.tf.nn.embedding_lookup这个函数的意义非常的简单,主要就是用来查询# embeddingembedding = tf.constant( [[0.21,0.41,0.51,0.11]], [0.22,0.42,0.52,0.12], [0.23,0.43,0.53,0.13], [0.24,0.44,0.54,0.14]],dtype=tf.float32)feature_batch = tf.constant

2022-04-13 11:56:16 1328

原创 机器学习面试:牛顿法为什么比梯度下降法更快

泰勒展开式就是使用多项式函数在x0x_0x0​处逼近函数f(x)f(x)f(x),即在x0x_0x0​处f(x)f(x)f(x)等于泰勒展开式。虽然是废话,但是一定要好好思考,这个才是核心1. 梯度下降法为什么可以求极值a. 梯度的定义我们通常称在函数f(x)f(x)f(x)某个点上x0x_0x0​的变化率为导数,通常可以求出这个点的切线,一般叫斜率,即f′(x0)=limΔyΔx=limf(x0+Δx)−f(x0)Δxf'(x_0)=lim \frac{\Delta y}{\Delta x}=li

2022-04-07 11:58:37 148

原创 机器学习面试:RL中的策略梯度

1. 策略梯度这是在看策略梯度算法时产生的一个困惑,假如我们有一个策略θ\thetaθ,通过这个策略可以跟环境交互,产生一系列的样本τ=τ1,τ2...τN\tau={\tau_{1},\tau_{2}...\tau_{N}}τ=τ1​,τ2​...τN​,这个策略得到的分数为Rθ‾=∑τR(τ)pθ(τ)=Eτ∼pθ[R(τ)]\begin{aligned}\overline{R_\theta}&=\sum_{\tau}R(\tau)p_\theta(\tau)\\&=E_{\ta

2022-02-22 11:09:34 881

原创 机器学习面试:交叉特征

1.困惑之源半年前第一次做推荐算法,无意中碰到了一个问题,我使用LR模型对用户和商品进行联合打分,其中使用了所谓的交叉特征,这个问题思考了大半年终于有了一些思路。问题是这样的,我统计了不同用户在不同类目上的点击率,以此作为所谓的交叉特征,并且将点击率做了一个线上表,当用户请求时,直接查询用户历史所有的类目偏好。其中ucucuc表示用户(user)和类目(cate)的交叉特征,这里为点击率,下标表示用户id和类目id用户数码女装美妆u1u_1u1​uc11uc_{11}uc11

2022-02-14 20:54:08 387

空空如也

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

TA关注的人

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