自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [牛客网刷题 Day2] JZ52 两个链表的第一个公共结点(没做出来)双指针巧解

题目描述:思考过程:好像想的太复杂了,首先固定phead1,寻找val一样的phead2,找到的话,就都往右移动一位;否则phead+1。可是需要注意好多好多的边界啊,写了一两个小时,最后还是好几个用例通不过,只能根据用例慢慢改,可是怎么改都不对。class Solution: def FindFirstCommonNode(self , pHead1 , pHead2): # write code here if pHead1==None or pHead2

2022-04-18 00:09:55 368

原创 [牛客网刷题 Day2] JZ25 合并两个排序的链表

题目描述啊,这道题我在LeetCode上做过呢!思路:知道怎么比较,怎么排序;但是不知道链表要怎么处理,因为它只有两个属性,当head移动到next,前面的节点信息就不在了,不知道怎么保存。即,不会按照顺序添加节点。可以使用一个列表,将所有的val按照顺序存起来,最后再转换成链表,可是题目肯定不希望我这样解决嘛,得从链表的性质入手解决才行。偷偷看了一下答案,原来用到了递归;还发现了一个神奇的方法:初始化的时候,使用res = dummy = ListNode(0),这样res.next后,du

2022-04-17 16:03:10 410 1

原创 [牛客网刷题 Day1] JZ24 反转链表

题目描述:心路历程:思路不难,但是写出来好难啊,各种边界条件都要注意输入为空链表时,不知道怎么做。。。 原来是 head == Noneclass Solution: def ReverseList(self , head: ListNode) -> ListNode: # write code here if head == None: return head last = ListNode(head.val)

2022-04-15 14:38:01 436

原创 [牛客网刷题 Day1] JZ6 从尾到头打印链表

题目描述输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。如输入{1,2,3}的链表如下图:返回一个数组为[3,2,1],0 <= 链表长度 <= 10000思考过程:之前在LeetCode做过这道题,可是现在看到又做不来了,难受。。。想不起来怎么构造链表了,上次也是 o(╥﹏╥)o第一反应是,先用list列表存储ListNode的所有值,再reverse返回。需要注意一下终止条件~注意一下,res.reverse()可以让res反转,返回值是none哦

2022-04-15 13:37:53 367

转载 Sparse稀疏矩阵主要存储格式总结

Sparse稀疏矩阵主要存储格式总结from scipy import sparsehelp(sparse)Sparse Matrix Storage FormatsThere are seven available sparse matrix types: 1. csc_matrix: Compressed Sparse Column format 2. csr_matrix: Compressed Sparse Row format 3. bsr

2022-04-06 11:04:36 486 1

原创 @njit 进行负采样,效率提升近40倍

慢吞吞的老方法:推荐算法中常常会用到BPR损失,在进行负采样时,常用方法为:def UniformSample_original_python(dataset): """ the original impliment of BPR Sampling in LightGCN :return: np.array """ total_start = time() user_num = dataset.trainDataSize users

2022-04-04 22:47:55 3130 4

原创 中科大+快手出品 CIRS: Bursting Filter Bubbles by Counterfactual Interactive Recommender System 代码解析

文章目录get_args() 解析参数load_mat()加载矩阵gym.make(args.env) 创建环境load_dataset_kuaishou() 加载数据集负采样构建dataset类论文简介:目前几乎所有的推荐的策略都面临着“越推越窄”和信息茧房(filter bubble)问题,这对于商业公司与用户来说是双输的局面。本文在快手App的交互式推荐数据中证实了信息茧房中过曝光效应带来的负影响,并首次将因果推断技术用于动态的交互式推荐中,最终学习一个能够避免信息茧房产生的推荐策略。先运行CIR

2022-04-03 09:43:54 3149 3

原创 快手+何向南团队最新论文Counterfactual Interactive Recommender System ,反事实推理融入离线强化学习,解决filter bubble/信息茧房问题

目录链接1. 相关背景1.1 核心思想2. 实证分析3. 方法3.1 基本思想3.2 User Model3.2 State Tracker3.3 RL agent3.3 Real Environment链接相关链接:论文链接在这里!代码解析在这里!代码链接作者主页相关知识:DeepFM模型Transformer模型PPO算法DeepCTR库Tianshou库KuaiRec数据集相关链接:论文:https://arxiv.org/abs/2202.10842数据:https:

2022-04-03 09:40:47 4592 1

原创 中科大何向南团队+快手App联合出品 KuaiRec | 快手首个稠密为99.6%的数据集 | 相关介绍、下载、处理、使用方法

文章目录数据集介绍相关链接:数据集介绍相关链接:论文:https://arxiv.org/abs/2202.10842数据:https://rec.ustc.edu.cn/share/598635c0-9585-11ec-8259-414ede1f8d4f代码:https://chongminggao.github.io/KuaiRec/Example:http://m6z.cn/5U6xyQKuaiRec是中科大与快手团队合作产出的一个稠密度高达99.6%(一般推荐系统公开数据集的稠密度在1

2022-03-18 16:22:01 7521 3

原创 LightGCN 代码解析

整体流程:构建dataset类:处理数据集,构建m_item, UserItemNet等统计量实例化LightGCN模型(继承自nn.module):初始化embedding、设置激活函数、调用dataset中的函数SparseGraph(构建邻接矩阵、度矩阵)指定loss,BPRLoss()调用Procedure.Test & Procedure.BPR_train_original进行测试和训练。那可以理解成,LightGCN就是通过信息传播聚合得到embedding,然后采集正负样

2022-02-21 09:36:31 4551 8

原创 Pytorch学习

2021.09.17import torch.nn as nntorch.nn.Linear(in_features,out_features,bias)用于建立全连接层。in_features指的是输入的二维张量的大小,out_features指的是输出的二维张量的大小,也代表了该全连接层的神经元个数。layer = torch.nn.Linear(30,5)input = torch.randn(12,30)layer(input) # 输出12x5torch.nn.Paramete

2022-02-17 14:46:40 1392

原创 scipy.sparse.csr_matrix 压缩稀疏矩阵

处理数据的时候总是会用到csr_matrix函数,每次百度出的解释都看不明白,于是自己写了个说明。目的:当user和item数目过多时,gpu存不下一个m*n的大矩阵,需要压缩为稀疏矩阵。用法:from scipy.sparse import csr_matrixrating = [1,2,3,4,5]user = [3,4,1,2,3]item = [1,1,1,2,2]res = csr_matrix((rating,(user,item)),shape=(5,5))print(res

2022-02-14 20:47:12 1044

原创 如何使用Sublime写latex(替代overleaf在线写论文)

下载sublime,安装各种工具网址:sublime安装Package Control(需要通过sublime的Package Control 安装LaTeXTools):法一:按 ctrl+`,然后将下面的代码输入,按enterimport urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.

2022-01-06 17:18:14 3739

原创 服务器小技能(alias, tmux, htop,gpustat, zsh)

目录alias自定义指令:tmux保持会话:htop查看CPU占用率:连接外网alias自定义指令:适用场景:想要替换某个长长的指令/设置指令的别名步骤:① vim .bashrc 进入用户配置文件② 在 # <<< conda initialize <<<下方添加想要替换的命令,如alias nv="watch -n .1 -d nvidia-smi" 就是用nv替换后面那一堆表达式。③ 按下esc键后输入冒号和wq键 保存并退出。④ 试一下输入nv

2021-12-25 22:48:36 2036 2

原创 图神经网络 图卷积网络

整理:图卷积的核心思想是利用『边的信息』对『节点信息』进行『聚合』从而生成新的『节点表示』GNN分为spectral domain和spatial domain:以前是谱域,涉及傅里叶变换、拉普拉斯矩阵等等(从信号与处理迁移过来的),现在逐渐转成空域,更简单一些。图上的空域:拓扑结构图上的频谱:没有一个直观的表示,只能用矩阵相乘的操作来表示。谱域:spectral domain(谱域):设计中间的卷积核->好几代GCN (从傅里叶变换到拉普拉斯矩阵,到卷积)离散卷积CNN -&gt

2021-12-21 20:57:22 2303

转载 EasyRL 强化学习笔记 9章节(Actor-Critic)

## Actor-Critic`演员-评论家算法(Actor-Critic Algorithm)`是一种结合`策略梯度`和`时序差分学习`的强化学习方法。借助critic进行单步更新。- `A3C`:Asynchronous Advantage Actor-Critic- `A2C`:Advantage Actor-Criticpolicy gradient:给定同样的action同样的state,可能会有不同的G。

2021-11-29 15:35:30 434 4

原创 如何把右下角网络图标调出来 亲测有用

打开 网络和internet设置选择 更改适配器选项选择当前连接的网络右键 属性,然后选择 配置 选择“高级” “IPv4硬件校验和”,选择关闭。就可以啦!如果选择关闭还是不行,就试试关了再开启。...

2021-11-24 14:24:23 2983

转载 EasyRL 强化学习笔记 7、8章节(DQN进阶,DQN连续动作)

DQN(进阶技巧)Double DQN**原因:**DQN中,Q值往往被高估了。设计了两个Q-network:假设第一个 Q-function 高估了它现在选出来的动作 a,只要第二个 Q-function Q’没有高估这个动作 a 的值,那你算出来的就还是正常的值。假设 Q’高估了某一个动作的值,那也没差,因为只要前面这个 Q 不要选那个动作出来就没事了,这个就是 Double DQN 神奇的地方。实现上:原本DQN就有两个network,目标网络(固定不动)和行为网络(不断更新)。

2021-11-15 09:40:39 999

转载 EasyRL 强化学习笔记 5、6章节(PPO,DQN)

第五章 PPOFrom On-policy to Off-policy如果要学习的 agent 跟和环境互动的 agent 是同一个的话, 这个叫做on-policy(同策略)。如果要学习的 agent 跟和环境互动的 agent 不是同一个的话, 那这个叫做off-policy(异策略)。policy gradient就是on-policy,必须要收集到很多τ\tauτ,然后更新式子,非常耗时。变成off-policy:使用另一个actor θ′\theta'θ′跟环境互动,用收集到的数据训练

2021-11-11 10:46:35 2815

转载 EasyRL 强化学习笔记 3、4章节(表格型方法,策略梯度)

本文转载于EasyRL。我是在阅读过程中从中摘录了一些重点,强烈建议大家阅读原文哦!写的超级细,而且在下面留言很快就会有回复。第三章 表格型方法MDPMDP四元组<S,A,P,R><S,A,P,R><S,A,P,R>(有时候也会加上KaTeX parse error: Undefined control sequence: \gmma at position 1: \̲g̲m̲m̲a̲变成五元组)。RL是一个序列决策过程model-basedmodel-

2021-11-10 14:51:15 591 2

原创 LeetCode 刷题小本本Day10 Search Insert Position (二分法)

题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法我的答案看到时间复杂度要求O(log n),立马想到了二分法~有个地方差点出错:循环的条件应该是while right>=leftclass Solution: def searchInsert(self, nums: List[int], target: int) -> int: left

2021-11-03 14:38:13 149 2

转载 EasyRL 强化学习笔记 1、2章节(强化学习概述,MDP)

目录第一章 强化学习概述Reinforcement Learning和监督学习对比:trajectory与episodeSequential Decision Makingstate和observation;MDP与POMDPAction SpacesMajor Components of an RL AgentPolicyValue FunctionModelPolicy-based 与 Value-basedTypes of RL Agentsvalue-based & policy-base

2021-11-03 11:06:46 1343

原创 LeetCode 刷题小本本Day9 Letter Combinations of a Phone Number (回溯)

题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。我的答案:读懂题目之后,感觉挺简单的呀,不就是两两组合吗,可是后来仔细一想,如果一下子输入8个数字,岂不是要循环8次啊。写的时候发现一个问题:我一开始并不知道需要循环多少次呀,不能直接写for循环呀。想到的笨办法:建立一个字典存储每个数字的value;设置8次循环,如果数字没有出现在digits中就把字典的value设为空。

2021-11-02 10:30:51 4578

原创 LeetCode 刷题小本本Day8 Container With Most Water (双指针)

题目:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。我的答案:转化成求min(xj,xi)∗(xj−xi)min(x_j,x_i)*(x_j-x_i)min(xj​,xi​)∗(xj​−xi​)最大值。一开始用的是很粗暴的方法,遍历两遍列表,结果超出时间限制ε=(´ο`*)))唉后来想到,能不能用

2021-10-29 16:58:46 3322 1

原创 十月学习日记

Interactive Recommender System via Knowledge Graph-enhanced Reinforcement Learning,KERL,overleaf编译错误,使用配置文件

2021-10-29 09:38:44 867

原创 LeetCode 刷题小本本Day7 Merge Two Sorted Lists(递归)

题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。我的方法:第一眼看见就觉得和Day2的题目很像啊,都是链表,不过上一个是将两个链表加起来,这个是比较大小。dummy=curr=ListNode(),中途只更改curr(curr.next = ListNode(x)),最后返回dummy.next。因为是比较大小,所以用到了前几天学到的float('inf')正无穷,当走到节点末尾时,就赋值正无穷。看了答案之后,原来还可以用递归的思路解。

2021-10-28 11:02:16 160

原创 LeetCode 刷题小本本Day6 Longest Palindromic Substring(动态规划)

题目:给你一个字符串 s,找到 s 中最长的回文子串。我的方法:因为回文串肯定有重复字符,所以首先去掉无重复字符的情况。一开始想的是,找出重复字符出现的位置,然后判断那一串是否是回文。但是,一个字符可能出现很多次,这个方法不行。后来又想到之前做过的一道,用到了滑动窗口的题目。之前那道题是寻找最长不重复子串,每次没有循环完整个字符串。这道题目需要循环完整个字符串。我的思路是:滑动窗口不停移动,直到找到一个值与substring[0]相同,判断是否是回文。好不容易写出来了,但是说超时了。又试了好

2021-10-28 00:01:19 209

原创 LeetCode 刷题小本本Day5 Median of Two Sorted Arrays(二分法)

题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。我的答案:class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float: curr1 = 0 curr2 = 0 flag1 = 0 flag2 = 0

2021-10-26 12:54:12 132

原创 LeetCode 刷题小本本Day4 Longest Substring Without Repeating Characters(滑动窗口)

题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。我的答案:class Solution: def lengthOfLongestSubstring(self, s:str): res_max = 0 for iter in range(len(s)): max_len = [] for i in range(len(s)-iter): if s[i+iter

2021-10-25 17:20:17 2815

原创 LeetCode 刷题小本本Day3 Valid Parentheses(栈)

题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。我的答案:class Solution: def isValid(self, s: str) -> bool: res_bool = True # 是奇数,肯定不对嘛 if (len(s)%2 != 0): res_bool =

2021-10-25 00:04:07 230 1

原创 LeetCode 刷题小本本Day2 Add Two Numbers(链表)

题目:You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.从八点半做到了解题过程:一开始题目都没看懂o

2021-10-24 15:36:25 174 1

原创 LeetCode 刷题小本本Day1 Two Sum(hashmap)

(1) Two Sum题目:Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.给定一个list和target,找到list中加起来等于target的索引,不能重复使用值。我的答案: def twoSum1(self, nums, target): """ :type nu

2021-10-22 23:16:17 1075 2

原创 Overleaf 小技巧(如何在arxiv下载latex文档 ;文献引用cite,citet,citep有什么区别;\newcommand命令怎么用;怎么打出引号、英文连接符)

目录arxiv文章如何下载latex文件引用文献cite,citet,citep有什么区别关于超链接,\newcommand命令怎么打出前引号后引号arxiv文章如何下载latex文件看论文的时候,遇到一些新奇的格式,但是不知道对方是怎么弄出来的,应该怎么办呢?可以去arxiv找找有没有这篇文章,然后把它的latex压缩包下下来。步骤:先在arxiv找到对应文章,点击other formats下载压缩包,一定记得改名哦!进行解压,再压缩成zip格式(因为overleaf只认zip格式)导

2021-10-18 11:02:13 15588 7

原创 九月学习笔记 (FM、一些论文阅读、代码)

目录2020.09.16FM 因子分解机2021.09.18论文阅读Interactive Recommender System via Knowledge Graph-enhanced Reinforcement LearningHierarchical Reinforcement Learning for Integrated RecommendationDEAR: Deep Reinforcement Learning for Online Advertising Impression in Reco

2021-10-13 15:20:39 628

原创 莫烦 强化学习视频整理

RL知识整理RL分类按是否理解环境分类:Model-free RL(不理解环境):用模型表示环境,从环境中得到反馈,再学习;只能一步一步等真实世界的反馈算法:Q Learning, Sarsa, Policy GradientsModel-Based RL(理解环境):可以模拟现实世界,有一个虚拟环境;预判断反馈算法:Q Learning, Sarsa, Policy Gradients按思想分:Policy-Based RL(基于概率):输出行动概率,然后根据概率采取行动(

2021-10-13 15:19:40 234

原创 交叉熵与KL散度

交叉熵:描述了两个概率分布之间的距离,当交叉熵越小说明二者之间越接近KL散度(相对熵):用于衡量对于同一个随机变量x的两个单独的概率分布P(x)和Q(x)之间的差异。

2021-10-13 15:18:16 181

原创 MAP和NDCG 概念及python代码

MAPAP:平均准确率,类似于顺序敏感的recall;返回的推荐结果中,我们需要的排在越前面越好。MAP:为所有用户的AP取均值。 def MAP(origin, res, N): sum_prec = 0 for user in res: hits = 0 precision = 0 # 一个用户一个用户算 for n, item in enumerate(res

2021-10-13 15:15:23 1022

原创 网络表示学习(DeepWalk,node2vec)

DeepWalkDeepWalk的主要思想是在由物品组成的图结构上进行随机游走,产生大量物品序列,然后将这些物品序列作为训练样本输入word2vec进行训练,得到物品的embedding。RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。node2vec2016年出现的n2v,相较于DeepWalk,是通过调整随机游走权重的方法使graph embedding的结果在网络的

2021-10-13 15:14:14 334

原创 Point-wise、Pair-wise、List-wise区别

在Information Retrieval领域一般按照相关度进行排序。比较典型的是搜索引擎中一条查询query,将返回一个相关的文档document,然后根据(query,document)之间的相关度进行排序,再返回给用户。而随着影响相关度的因素变多,使用传统排序方法变得困难,人们就想到通过机器学习来解决这一问题,这就导致了LRT的诞生。Ranking模型可以粗略分为基于相关度和机遇重要性进行排序。基于相关度的模型,通常利用query和doc之间的词共现特性(如布尔模型)、VSM(如TFIDF、L

2021-10-13 14:58:16 3679

原创 n折交叉验证结果中的+-怎么算的? 标准差?有偏估计?无偏估计?

n折交叉验证的结果怎么写Q:这种实验结果里的±是怎么写出来的呢?A:均值± 标准差标准差百度标准差的时候,发现了这两个公式。差别是,后者是无偏估计量。无偏估计那么什么是无偏估计呢?下面三个链接很好的解释了:为什么分母从n变成n-1之后,就从【有偏估计】变成了【无偏估计】?为什么样本方差(sample variance)的分母是 n-1?为什么样本方差(sample variance)的分母是 n-1?下面自己总结总结~个人理解:首先,我们要看看方差是怎么计算的:E[1n∑i=1

2021-10-11 16:52:13 2181 4

空空如也

空空如也

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

TA关注的人

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