05|策略建模:为什么AI系统能够猜你所想?
05|策略建模:为什么AI系统能够猜你所想?
讲述:Tyler
时长13:37大小12.43M
AIRC 系统
指标建模
召回模块
排序模块
控制 & 博弈
风控模块
小结
思考题
本文介绍了AIRC系统在AI系统中的重要性以及其在电商系统中的应用。文章从AIRC系统的架构出发,介绍了策略建模在AI系统中的重要性。首先,指标建模的重要性以及在电商系统中通过排序算法提升GMV指标得到了阐述。其次,召回模块和排序模块在加速搜索结果展示和对召回结果进行精确排序方面的作用被详细介绍。此外,文章还涉及了控制算法和博弈算法在广告系统中的应用,以及风控模块在系统安全方面的重要性。通过本文的总结,读者可以快速了解AIRC系统的核心内容,以及策略建模在AI系统中的重要作用。整体而言,本文涵盖了AIRC系统的重要组成部分以及其在电商系统中的应用,为读者提供了对AI系统中策略建模的深入了解。
赞 16
提建议
全部留言(10)
- 最新
- 精选
- 顾琪瑶2023-08-21 来自上海1. 可以采用传统的搜索引擎的思路来做, 先将文档中的内容进行分词, 并为词项建立索引, 词项与文档号进行关联, 搜索时根据词项找到文档进行检索 2. 多路召回还是有不明白的地方, 是指使用多种不同的召回策略多对一批候选物料进行检索吗? 如果是的话, 那最后是否可以将候选的物料特征进行乘积, 最后做排序来选择? 延时控制的话可以考虑每个节点执行不动的召回策略再主节点进行合并排序
作者回复: 你好,顾琪瑶! 回答得很好,第一题完全可以使用倒排索引。 第二题回答基本正确。你可以根据你对生活的观察来设置各种召回策略。比如,你可以用文件本身的特征(比如最近修改时间是周几)来建立倒排索引。如果今天是周一,你就可以通过倒排索引,召回历史修改时间是周一的文件。这种策略利用了你不同工作日的使用习惯,可以为你推荐更相关的文件。 还有许多其他的召回策略,你可以根据自己的需要进行设置。比如,你可以用文件的大小、创建时间、最近访问时间等特征来建立倒排索引。你也可以用文件的标题、内容、作者等信息来建立倒排索引。 设置好召回策略后,你便可根据当时的情景并行从多个倒排索引中召回文件,之后对多路结果归并,来提高召回的速度,在第 9 -10 课我们还会更详细地介绍这部分知识。
10 - GAC·DU2023-08-21 来自北京# 多角度捕捉,合并组合推荐结果,关于性能使用了简单的倒排索引,还可以用并行和加权等方式提升性能,定期对多路召回算法的性能进行测试和评估,以识别潜在的性能问题并及时进行优化。 import time class FileRecommendationSystem: def __init__(self, file_database): self.file_database = file_database self.inverted_index = self.build_inverted_index(file_database) def build_inverted_index(self, file_database): inverted_index = {} for file_id, content in file_database.items(): words = content.split() for word in words: if word not in inverted_index: inverted_index[word] = [] inverted_index[word].append(file_id) return inverted_index def recall_by_query(self, query): query_words = query.split() potential_files = set() for word in query_words: if word in self.inverted_index: potential_files.update(self.inverted_index[word]) return potential_files def recommend_files(self, query, num_recommendations=10): recall_1 = self.recall_by_query(query) recall_2 = self.another_recall_algorithm(query) recall_3 = self.yet_another_recall_algorithm(query) merged_recall = recall_1 | recall_2 | recall_3 recommended_files = [] for file_id in merged_recall: recommended_files.append((file_id, self.file_database[file_id])) recommended_files.sort(key=lambda x: x[0]) return recommended_files[:num_recommendations] def another_recall_algorithm(self, query): return set([file_id for file_id, content in self.file_database.items() if "orange" in content]) def yet_another_recall_algorithm(self, query): return set([file_id for file_id, content in self.file_database.items() if "apple" in content])展开
作者回复: 你好,GAC·DU!甚至代码都写出来了,很棒!那再送你一道课后附加题,如果要你把检索出的文件内容发给 LLM 让它对文件内容进行摘要,你有什么思路吗?
共 2 条评论4 - 极客雷2023-12-11 来自广东你是谁?严重怀疑是AI回复评论,哈哈
作者回复: 你好,极客雷!你可以用课程中提到过的模型攻击方法,测试一下我是不是机器人 :)
1 - Lucky+2023-09-04 来自北京1. 文档预处理:这是第一步,需要将所有的文档读入程序,进行必要的预处理。预处理可能包括去除标点符号、数字、特殊字符等,转换所有的大写字母为小写,进行词干提取等。 2. 分词:将预处理后的文档进行分词,将每个文档分解为独立的词项(token)。 3. 建立倒排索引:倒排索引是信息检索中常用的数据结构,它将每个词项映射到出现该词项的文档列表。这样,当我们搜索一个词项时,就可以快速找到所有包含该词项的文档。 4. 查询处理:当用户输入查询时,程序需要将查询分词,并在倒排索引中查找每个词项。然后,系统可以通过一些策略(如布尔查询、向量空间模型等)来确定最相关的文档。 5. 结果返回:将搜索到的相关文档返回给用户。 6. 优化和更新:根据用户的反馈和使用情况,不断优化搜索算法,并定期更新倒排索引,以保持与文档库的同步。展开
作者回复: 你好,Lucky!回答的很好,在后面的课程里期待你的持续留言!
1 - 小耿2023-08-24 来自北京请问老师,期望收益计算公示中的点击率、加购率和付款率是如何得到的?
作者回复: 你好,小耿!点击率、加购率和付款率是通过深度学习模型预测得到的,在第6-9讲中将详细介绍相关建模方法。在接下来的课程中,也期待你的反馈。
- 张清荣2024-01-03 来自黑龙江AIGC 系统是从 AIRC 系统演化而来的? 上节课哪里提到了?1
- lw2023-10-10 来自中国香港2、拿我自己举例,我要使用哪个文件大概率是最近一周点击最多的文件或者是此刻前打开的文件,二个影响因素做个加权,本质是个概率的问题1
- 方梁2024-06-12 来自北京很好
- 周晓英2023-10-02 来自美国第二个问题的思路: 理解需求: 首先,我们需要理解用户的使用习惯和倾向,这可能包括分析用户的历史行为数据,例如他们以前打开过哪些文件,花费的时间等。 我们也需要了解文件的内容和结构,以及可能影响用户需求的其他因素(例如,时间、任务类型等)。 数据准备: 收集并准备必要的数据,包括用户行为历史数据和文件元数据。 可能还需要构建用户和文件的特征,以便机器学习模型能够理解。 多路召回策略: 基于内容的召回:分析文件的内容,找到与用户过去交互过的文件内容相似的文件。 基于协同过滤的召回:利用其他相似用户的行为来推荐可能的文件。 基于时间的召回:考虑文件的时间相关性,例如最近修改过或最近访问过的文件。 基于热门度的召回:根据文件的流行程度或访问频率进行推荐。 基于序列的召回:考虑用户的行为序列,例如他们通常会在打开一个文件后打开哪些文件。 合并与排名: 将从不同策略中获得的候选文件合并成一个候选集合。 使用一个排名模型(例如,学习排序模型)对候选文件进行排名,以确定最相关的文件。 优化性能: 为了确保在100ms内返回结果,可能需要优化召回和排名算法的性能,包括使用索引、减少模型复杂度和/或采用分布式计算等。展开
- GAC·DU2023-08-21 来自北京# coding:utf-8 # 数据准备 -> 分词处理 -> 建立倒排索引 -> 搜索处理 -> 排序 -> 返回结果 class InvertedIndex: def __init__(self): self.index = {} # 追加数据,做简单的分词处理 def add_document(self, doc_id, content): words = content.split(" ") for word in words: if word not in self.index: self.index[word] = [] if doc_id not in self.index[word]: self.index[word].append(doc_id) # 搜索处理,返回包含该单词的文档列表 def search(self, query): if query in self.index: return self.index[query] else: return [] index = InvertedIndex() # 准备追加数据 index.add_document(1, "apple banana") index.add_document(2, "banana orange") index.add_document(3, "apple apple apple") index.add_document(4, "苹果 香蕉 葡萄") index.add_document(5, "苹果 葡萄 葡萄 葡萄") # 搜索单词并返回包含该单词的文档列表 result = index.search("apple") print("Documents containing 'apple':", result) result = index.search("banana") print("Documents containing 'banana':", result) result = index.search("orange") print("Documents containing 'orange':", result) result = index.search("grape") print("Documents containing 'grape':", result) result = index.search("葡萄") print("Documents containing '葡萄':", result)展开