关于机器学习:用遗传算法寻找迷宫出路

遗传算法是一种基于达尔文进化论的搜寻启发式算法。该算法模仿了基于种群中最适宜个体的自然选择。 遗传算法须要两个参数,即种群和适应度函数。依据适应度值在群体中抉择最适宜的个体。最衰弱的个体通过穿插和渐变技术产生后辈,发明一个新的、更好的种群。这个过程反复几代,直到失去最好的解决方案。 要解决的问题本文中咱们将应用遗传算法在迷宫中找到最短门路。 本文的的门路布局基于论文Autonomous Robot Navigation Using Genetic Algorithm with an Efficient Genotype Structure。 本文的代码基于两个假如: 1、代理不能对角线挪动,也就是说只能左右,高低挪动,不能走斜线。 2、迷宫的地图是已知的,然而代理不晓得。 基因型在由 N 列建模的导航环境中,门路能够由具备 N 个基因的基因型示意。 每个基因都是一个代表检查点坐标的元组。 所以咱们的基因型如下,列式构造: 在列式构造中,咱们假如每个基因都只放在一列中,例如,取一条大小为 8 的染色体,[(1,1), (4,2), (4,3), (6,4), (2,5), (3,6), (7,7), (8,8)]。 它会像这样搁置: 这里假如起始坐标是(1,1),指标坐标是(8,8) 有两种办法能够从一个检查点挪动到另一个检查点: 先排成一行挪动 或 先排成一列挪动 行挪动:先在一行中挪动,而后在列中挪动。 如果咱们从后面的例子中获取染色体,咱们失去的门路是: 列挪动:相似的,先在一列中挪动,而后在一行中挪动。 咱们失去的门路是: 尽管这种基因型构造很好,但它不能为某些迷宫产生门路。 所以这种构造假设每个门路段都以间断的列完结。 实现遗传算法本文应用python语言来实现遗传算法,并在最初有残缺代码链接。 1、导入模块 这里的一个没见过的模块是pyamaze,它次要是python中生成迷宫。 fromrandomimportrandint, random, choice frompyamazeimportmaze, agent fromcopyimportdeepcopy, copy importcsv2、定义常量和一些初始化 设置程序的不同参数并创立一个迷宫。 #initialize constants POPULATIONSIZE=120 ROWS, COLS=16,8 #Set the mutation rate MUTATION_RATE=100 # start and end points of the maze START, END=1, COLS #weights of path length, infeasible steps and number of turns wl, ws, wt=2, 3, 2 #file name for storing fitness parameters file_name='data.csv' #initilize a maze object and create a maze m=maze(ROWS, COLS) m.CreateMaze(loopPercent=100) maps=m.maze_map3、种群的创立 ...

April 4, 2023 · 7 min · jiezi

关于机器学习:奇异值分解SVD和图像压缩

在本文中,我将尝试解释 SVD 背地的数学及其几何意义,还有它在数据迷信中的最常见的用法,图像压缩。 奇怪值合成是一种常见的线性代数技术,能够将任意形态的矩阵分解成三个局部的乘积:U、S、V。原矩阵A能够示意为: 具体来说,A矩阵中的奇怪值就是\Sigma矩阵中的对角线元素,它们是矩阵A的特征值的平方根,示意A矩阵在各个主方向上的拉伸水平。U矩阵是AA^T的特征向量形成的正交矩阵,示意数据集在降维后的新的坐标系中的投影。V矩阵是A^TA的特征向量形成的正交矩阵,示意每个数据点在降维后的新坐标系中的坐标。 一个矩阵的奇怪值(singular values)是指其奇怪值合成中的\Sigma矩阵的对角线上的元素,也就是特征值的平方根。换句话说,矩阵的奇怪值是矩阵的奇怪值合成中量度矩阵对输出矩阵进行的线性变换的尺度因子。 奇怪值在很多利用中都有宽泛的利用,例如在图像处理中,它能够用来对图像进行压缩和降噪;在举荐零碎中,它能够用来对用户的偏好进行建模和举荐相干的产品或服务;在自然语言解决中,它能够用来对文本数据进行降维和特征提取等。 数学原理如果咱们有一个矩阵A 要计算 SVD,首先须要通过找到 AA^{T} 的特征值来计算奇怪值。 上述矩阵的特征方程为: 所以失去的奇怪值是: 奇怪向量就是 ATA 的正交特征向量集。ATA 的特征值是 25、9 和 0,因为 ATA 是对称的,咱们晓得特征向量是正交的。 所以,先计算 =25 而后进行化简: 其方向的单位向量为: 同理 对于 = 9,特征向量为: 对于第三个特征向量 0,咱们能够应用它垂直于 v1 和 v2 的属性: 求解上述方程失去第三个特征向量 当初,咱们计算 U,失去 这样就失去了最终的 SVD 方程: 图像压缩通过仅保留最重要的奇怪值及其对应的奇怪向量,SVD 被用于图像压缩以减小图像的大小。这能够从根本上缩小在不失落其最重要的视觉数据的状况下存储图像所需的额定存储量。 咱们将应用上面的图像进行图像压缩: 导入库和读取图片非常简略 import requests import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('flower.bmp') gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray_image = gray_image.astype(np.float64)这里咱们将图像转换成灰度图,执行奇怪值合成 ...

April 3, 2023 · 1 min · jiezi

关于机器学习:基于凸集上投影POCS的聚类算法

POCS:Projections onto Convex Sets。在数学中,凸集是指其中任意两点间的线段均在该汇合内的汇合。而投影则是将某个点映射到另一个空间中的某个子空间上的操作。给定一个凸汇合和一个点,能够通过找到该点在该凸汇合上的投影来进行操作。该投影是离该点最近的凸集内的点,能够通过最小化该点和凸集内任何其余点之间的间隔来计算。既然是投影,那么咱们就能够将特色映射到另一个空间中的凸汇合上,这样就能够进行聚类或降维等操作。 本文综述了一种基于凸集投影法的聚类算法,即基于POCS的聚类算法。原始论文公布在IWIS2022上。 凸集凸集定义为一个数据点汇合,其中连贯汇合中任意两点x1和x2的线段齐全蕴含在这个汇合中。依据凸集的定义,认为空集∅、单集、线段、超平面、欧氏球都被认为是凸集。数据点也被认为是凸集,因为它是单例集(只有一个元素的汇合)。这为 POCS 的概念利用于聚类数据点开拓了一条新门路。 凸集投影(POCS)POCS办法大抵可分为交替式和并行式两种。 1、交替式poc 从数据空间中的任意一点开始,从该点到两个(或多个)相交凸集的交替投影将收敛到汇合交点内的一点,例如下图: 当凸集不相交时,交替投影将收敛到依赖于投影阶数的greedy limit cycles。 2、并行式 POCS 与交替模式不同,并行的POCS 是从数据点到所有凸集同时进行投影,并且每个投影都有一个重要性权重。对于两个非空相交凸集,相似于交替式版本,平行投影会收敛到集相交处的一个点。 在凸集不相交的状况下,投影将收敛到一个最小解。基于pocs的聚类算法的次要思维来源于这一个性。 无关POCS的更多细节,能够查看原论文 基于pocs的聚类算法利用并行POCS办法的收敛性,论文作者提出了一种非常简单但在肯定水平上无效的聚类算法。该算法的工作原理与经典的K-Means算法相似,但在解决每个数据点的形式上存在差别:K-Means算法对每个数据点的重要性加权雷同,然而基于pocs的聚类算法对每个数据点的重要性加权不同,这与数据点到聚类原型的间隔成正比。 算法的伪代码如下所示: 试验后果作者在一些公共基准数据集上测试了基于pocs的聚类算法的性能。下表总结了这些数据集的形容。 作者比拟了基于pocs的聚类算法与其余传统聚类办法的性能,包含k均值和含糊c均值算法。下表总结了执行工夫和聚类谬误方面的评估。 聚类后果如下图所示: 示例代码咱们在一个非常简单的数据集上应用这个算法。作者曾经公布了间接应用的包,对于利用咱们能够间接应用: pip install pocs-based-clustering创立一个以10个簇为核心的5000个数据点的简略数据集: # Import packages importtime importmatplotlib.pyplotasplt fromsklearn.datasetsimportmake_blobs frompocs_based_clustering.toolsimportclustering # Generate a simple dataset num_clusters=10 X, y=make_blobs(n_samples=5000, centers=num_clusters, \ cluster_std=0.5, random_state=0) plt.figure(figsize=(8,8)) plt.scatter(X[:, 0], X[:, 1], s=50) plt.show() 执行聚类并显示后果: # POSC-based Clustering Algorithm centroids, labels=clustering(X, num_clusters, 100) # Display results plt.figure(figsize=(8,8)) plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis') plt.scatter(centroids[:, 0], centroids[:, 1], s=100, c='red') plt.show() ...

April 1, 2023 · 1 min · jiezi

关于机器学习:ChatGPT也BUG带你走进ChatGPT背后的网络基础设施

ChatGPT是OpenAI公司开发的一款聊天机器人利用,自2022年11月推出以来以迅雷不及自欺欺人之势火爆寰球。ChatGPT不仅能够模拟人类对话,还能够创立音乐、电视剧、童话故事和学生论文,甚至是编写和调试计算机程序。截至2023年1月,ChatGPT的用户已超过1亿,成为迄今为止增长最快的生产级应用程序。寰球海量用户的激情试用不仅让OpenAI公司的市场估值迅速飙升到290亿美元,然而也给后盾服务的治理和保护带来了一些困扰。有网友示意当问ChatGPT“中国足球如何能力捧起大力神杯”等问题时,ChatGPT的答复窗口一片空白。CNBC在2022年12月15日的报道中写道the service still goes down from time to time(服务时常中断)。难道ChatGPT也BUG?明天小编就拿出咱们的谛听从网络性能及用户体验监控平台对ChatGPT来一个基础设施大摸底,来验证下ChatGPT的响应速度、性能如何,它又是如何满足寰球大量用户同时应用的?上面就谛听对ChatGPT相干产品提供对外拜访服务的基础设施进行具体梳理,OpenAI目前提供的服务次要有以下四个:公司官网:https://openai.com提供OpenAI公司钻研状况、相干产品、免费状况的介绍阐明,并提供了API文档和相干产品的入口。api服务:https://api.openai.com提供API拜访服务服务平台:https://platform.openai.com提供用户登录、API文档阐明、罕用示例等性能ChatGPT:https://chat.openai.com提供ChatGPT产品服务咱们首先应用查问一下openai的权威域名服务器:$ nslookup -type=NS http://openai.comNon-authoritative answer:http://openai.com nameserver = ns2-02.azure-dns.net.http://openai.com nameserver = ns3-02.azure-dns.org.http://openai.com nameserver = ns4-02.azure-dns.info.http://openai.com nameserver = ns1-02.azure-dns.com.从名称上能够看进去它是由微软Azure云平台提供的DNS解析服务,而后咱们应用IP定位服务对这四台域名解析服务器的IP进行定位,发现它们都属于AS8086自治零碎,位于美国微软公司的云网络中。接下来,咱们在谛听零碎中对OpenAI相干的服务进行监测:ChatGPT监控咱们从位于寰球各地的10个城市中对ChatGpt的服务页面进行拜访,响应的服务器IP有两个104.18.2.161、104.18.3.161,它们同样属于Cloudflare公司,并且应用了Cloudflare提供的CDN减速服务。网络层面上,从寰球各地拜访都是比拟顺畅的,详情如下图所示:然而,在利用层面上,ChatGPT不仅会对访问者的IP进行限度,还会对用户的拜访环境进行限度。在用户环境限度上,不容许应用自动化工具,比方Selenium进行拜访,在IP限度方面,无奈从中国大陆、中国香港、中国台湾以及俄罗斯等地区拜访。拜访界面如下所示:官网监控咱们在谛听零碎中从寰球12个不同的城市发动了对openai官网的监控,响应的服务器IP至多有8个,比方13.107.238.46、13.107.238.59。通过对这些IP进行定位,发现这些服务器都位于美国微软公司的Azure云网络中,另外在HTTP响应头中也带有X-Azure-Ref标识,这也阐明了http://openai.com是通过Azure云平台来提供服务的,另外因为响应IP与申请地位无关,所以揣测是应用了Azure中的CDN服务。从探测机到http://openai.com服务器的门路图如下所示:能够看到在网络层面上寰球各地都能够拜访openai官网,但国内拜访时提早显著稍高,在70ms左右。另外下图阐明了在Web服务层面上,寰球各地也都是能够拜访的。API服务监控咱们同样从12个城市对openai的api接口服务发动监测,响应的服务器IP只有一个52.152.96.252,它属于微软Azure云网络,位于美国圣安东尼奥市。猜想是因为API服务的用户量比拟少,所以并没有部署CDN减速服务。从寰球各地的探测机到api服务器的丢包、时延、抖动如下图所示:能够看到网络是比较稳定的,丢包很少。但从美国以外的国家拜访时时延是比拟高的,大略在150~200ms。在接口服务层面上,在寰球多个城市都能够失常调用。并没有限度拜访。平台监控针对http://platform.openai.com服务,咱们从寰球12个城市的探测机发动监测,能够看到响应的服务器IP只有两个104.18.1.104 、104.18.0.104。对这两个IP进行定位查问,发现它们位于美国,属于Cloudflare公司,openai在这里应用了Cloudflare提供的负载平衡性能。在下图的网络门路中能够看到,从寰球各地到Cloudflare中的服务器的时延都是比拟低的(50ms以内),所以揣测它可能应用了Cloudflare提供的CDN减速服务。在web服务层面上,位于寰球各地的探测机都能够失常拜访http://platform.openai.com服务中的性能。下层AS拓扑剖析在AS层面上,openai相干服务次要位于微软的AS8075以及Cloudflare的AS13335。AS8075中具备196个互联网替换点,IPv4前缀有349个,IPv6前缀有23个。BGP对等AS有386个,次要如下图所示:相干AS拓扑图如下所示:AS13335中具备285个互联网替换点,IPv4前缀1777个,IPv6前缀1355个,与其形成BGP Peer关系的AS共有1264个,相干AS的拓扑构造如下图所示:总结通过谛听的检测后果能够看到OpenAI的ChatGpt服务目前次要是通过Cloudflare的CDN减速服务来向寰球各地的用户提供拜访服务的,不过,比拟遗憾的是并没有对中国地区凋谢。其余的诸如官网和API等服务则通过微软的Azure云平台对外提供服务,并且应用Azure的DNS解析服务进行OpenAI的域名解析。艰深的讲,ChatGPT 的API响应速度绝对比较稳定,丢包率低。截至目前为止,对于ChatGPT中断的相干报道曾经越来越少,这也阐明ChatGPT在基础设施服务上做的越来越欠缺了。随着微软加大对OpenAI的投资,微软作为OpenAI的次要股东及首选商业合作伙伴,并且领有GTP-3的独家受权,将来Azure云平台可能会托管openai更多的相干产品和服务。此外,随着ChatGPT API的衍生产品越来越多,其API服务的负载也会越来越高,预计很快就会采纳CDN提供寰球减速服务。所以ChatGPT 的空白和缄默很有可能是大家的发问过于离谱,于是它抉择了此时无声胜有声。然而对于ChatGPT 火爆最终还是回归到了AI是否会代替人类这个永恒不变的话题。以目前的状况来看,ChatGPT比起以往的AI的确是有肯定的晋升,只有问题形容精准,能够帮你写作文、做表、写诗等等。只是事实往往比较复杂,例如甲方须要的五彩斑斓的黑、ChatGPT出了七八版计划之后领导示意还要第一版,字再大点等状况,很容易把ChatGPT的CPU干烧啊....现阶段的AI是否代替人类,后果不言而喻。

March 31, 2023 · 1 min · jiezi

关于机器学习:一个有效的图表图像数据提取框架

 一、简要介绍 在本文中,作者通过采纳最先进的计算机视觉技术,在数据挖掘零碎的数据提取阶段,填补了钻研的空白。如图1所示,该阶段蕴含两个子工作,即绘制元素检测和数据转换。为了建设一个鲁棒的Box detector,作者综合比拟了不同的基于深度学习的办法,并找到了一种适合的高精度的边框检测办法。为了建设鲁棒point detector,采纳了带有特色交融模块的全卷积网络,与传统办法相比,能够辨别近点。该零碎能够无效地解决各种图表数据,而不须要做出启发式的假如。在数据转换方面,作者将检测到的元素转换为具备语义值的数据。提出了一种网络来测量图例匹配阶段图例和检测元素之间的特色相似性。此外,作者还提供了一个对于从信息图表中获取原始表格的baseline,并发现了一些要害的因素来进步各个阶段的性能。试验后果证实了该零碎的有效性。 二、钻研背景 图表数据是一种重要的信息传输媒介,它能简洁地分类和整合艰难信息。近年来,越来越多的图表图像呈现在多媒体、科学论文和商业报告中。因而,从图表图像中主动提取数据的问题曾经引起了大量的钻研关注。 如图1所示,图表数据挖掘零碎个别包含以下六个阶段:图表分类、文本检测和辨认、文本角色分类、轴剖析、图例剖析和数据提取。在上述所有阶段中,数据提取是最要害、最艰难的局部,其性能取决于定位的品质。在本工作中,作者次要探讨了数据提取阶段。本阶段的指标是检测地块区域中的元素,并将它们转换为具备语义的数据标记。 如图2所示,该工作有两个子工作:绘图元素检测和数据转换  作者从指标检测畛域学习办法,建设了一个鲁棒的数据提取零碎。然而,应该分明的是,图表图像与天然图像有显著的不同。如图3所示,(a)是来自COCO数据集的图像,(b)是来自合成图表数据集的图像。首先,与个别对象相比,图表图像中的元素具备很大范畴的长宽比和大小。图表图像蕴含了不同元素的组合。这些元素能够是十分短的,比方数字点,也能够是长的,比方题目。其次,图表图像对定位精度高度敏感。尽管在0.5到0.7范畴内的IoU值对于个别的指标检测是可承受的,但对于图表图像则是不可承受的。如图3b所示,即便当IoU为0.9时,在条形图像上仍有较小的数值偏差,这显示了图表图像对IoU的敏感性。因而,对于图表数据的提取,检测零碎须要高精度的边框或点,即具备较高的IoU值。 因而,对于图表数据的提取,检测零碎须要高精度的边界边框或点,即具备较高的IoU值。  目前,最先进的计算机视觉技术还没有被图表开掘办法齐全采纳。此外,应用基于深度学习的办法进行图表开掘的比拟也很少。人们认为,基于深度学习的办法能够防止硬启发式假如,并且在解决各种实在图表数据时更持重。在本钻研中,作者应用已发表的实在数据集,试图填补数据提取阶段的这一钻研空白。在所提出的框架中,首先检测到主区域中的元素。基于数据挖掘零碎中前几个阶段的轴剖析和图例剖析后果,作者将检测到的元素转换为具备语义值的数据标记。这项工作的奉献能够总结如下。(i)为了构建一个鲁棒的Box detector,作者综合比拟了不同的基于深度学习的办法。作者次要钻研现有的指标检测办法是否实用于条型元素检测。特地是,它们应该可能(1)检测具备较大长宽比范畴的元素,并可能(2)定位具备较高IoU值的对象。(ii)为了构建一个鲁棒的point detector,作者应用一个带有特色交融模块的全卷积网络(FCN)来输入一个热图掩模。它能很好地区分近点,而传统的办法和基于检测的办法很容易失败。(iii)在数据转换的图例匹配阶段,一个网络被训练来测量特色相似性。当特征提取阶段存在噪声时,它比基于图像的特色具备鲁棒性。最初,作者提供了一个公共数据集的baseline,这能够促成进一步的钻研。 三、办法介绍 作者所提出的办法的总体架构如图4所示。在性能上,该框架由三个组成部分组成:一个事后训练好的图表分类模型,用于检测边框或点的元素检测模块,以及用于确定元素值的数据转换。在上面的局部中,作者首先介绍box detector和point detector的细节。接下来,作者将提供数据转换的实现细节。 3.1 Box detector 为了提取不同尺度上的鲁棒特色,作者应用了带有FPN的ResNet-50 。FPN应用带有横向连贯的自顶向下体系结构,以交融来自繁多尺度输出的不同分辨率的个性,使其可能检测具备大高宽比范畴的元素。为了检测具备高IoU的边框,作者抉择CascadeR-CNN作为作者的box detector。如图5(a)所示,box detector有四个阶段,一个区域候选网络(RPN),三个用于检测。第一个检测阶段的采样遵循Faster R-CNN。在接下来的阶段中,通过简略地应用上one-stage的回归输入来实现从新采样。 3.2  Point detector 点是图表数据中的另一个常见的图表元素。如前所述,相应的图表类型包含散点、线和面。个别来下,点密集散布在地块区域,数据以(x,y)的格局示意。在这项工作中,作者应用基于宰割的办法来检测点,这能够帮忙辨别近点。 网络结构 如图5(b)所示,从骨干网络中提取了四级的特色图,记为,其大小别离为输出图像的1/16、1/8、1/4和1/2。而后,在上采样阶段,对来自不同深度的特色进行交融。在每个合并阶段中,来自最初一个阶段的特色映射首先被输出到上采样模块,使其大小增加一倍,而后与以后的特色映射连接起来。接下来,应用由两个间断的层构建的交融模块,生成这个合并阶段的最终输入。在最初一个合并阶段之后,而后应用由两个层构建的头模块。最初,将特色图上采样到原图大小。 标签生成 为了训练FCN网络,作者生成了一个热图掩模。二进制映射将轮廓内的所有像素设置为雷同的值,但不能反映每个像素之间的关系。与二值宰割图相比,作者为掩模上的这些点绘制高斯热图。利用高斯核函数计算了高斯值。如果两个高斯分布重叠,而一个点有两个值,作者应用最大值。 其中(x、y)是掩模上的点坐标,(、)是指标点的核心。是一个决定大小的高斯核参数。在这里,作者将的值设为2。 后处理 在测试阶段,Point detector输入一个热图掩模。作者首先过滤主绘图区域外的输入噪声。而后,作者应用一个高置信度阈值来输入正区域。通过寻找连贯重量的核心,失去最终的点输入。在连通重量剖析过程中,对于较大的连通区域,作者也随机抉择该区域内的点作为输入。 3.3 数据变换 在检测到元素之后,作者须要确定元素的值。在这个阶段,指标是将绘图区域中检测到的元素转换为具备语义值的数据标记。如图6所示,本阶段进行了图例匹配和值计算。 图例匹配: 依据在数据挖掘零碎中从第五阶段失去的图例剖析后果,作者能够失去图例的地位。如果存在图例,作者须要提取元素和图例的特色。而后利用l2间隔来度量特色的相似性,并将元素划分为相应的图例。基于图像的特色,如RGB特色和HSV特色,在检测后果不够严密时不鲁棒。因而,作者提出训练一个特色模型来度量特色相似性。 该网络间接从patch输出图像x学习映射到嵌入向量。它由多个模块组成,应用conv-BN-ReLU层构建,最初为每个patch输入输出一个128d的嵌入向量。在训练阶段,网络应用三倍的损失进行优化。这种损失的目标是通过一个间隔边际将正对和负对离开。同一集群的嵌入向量应该间隔较小,不同的集群应该间隔较大。在测试阶段,将裁剪后的图例补丁和元素补丁输出到模型中。对于每个元素,在特色维度上间隔最小的图例是对应的类。 数值计算: 依据第四阶段失去的轴剖析后果,作者能够失去检测到的勾选点的地位及其对应的语义值。而后,作者剖析了相邻勾选点之间的数值关系,包含线性或指数的状况。最初,作者计算了单位尺度的值,并应用插值办法来确定元素的值。 四、试验 4.1数据集 本钻研中应用了两组数据集,别离为Synth2020和UB PMC2020。第一个数据集Synth2020,是Synth2019的扩大版本。应用Matplotlib库创立了多个不同类型的图表。第二个数据集是来自PubMedCentral的迷信出版物中的实在图表,它具备不同的图像分辨率和更多的图像不确定性。作者将ICPR2020官网训练数据集随机分为训练集和验证集。表1给出了这两个数据集宰割的详细信息。 4.2配置细节 在Box detector试验中,作者抉择条形数据进行训练。主特征提取器是在ImageNet上事后训练过的ResNet-50。在回归阶段,作者采纳RoIAlign抽样候选到7x7的固定大小。batch size为8,初始学习率设置为0.01。采纳随机梯度降落(SGD)对模型进行优化,训练的最大周期为20。在推理阶段,利用非最大克制(NMS)来克制冗余输入。 在point detector试验中,作者抉择散点型数据进行训练。在训练阶段,作者应用MSE损失来优化网络。采纳多种数据加强,包含随机裁剪、随机旋转、随机翻转和图像失真,以防止过拟合。作者采纳OHEM 策略来学习艰难样本。正样本和负样本的比例为1:3。应用Adam优化器对模型进行优化,最大迭代次数为30k,batch size为4。 在数据转换试验中,作者训练模型提取特色进行聚类。训练的输出大小为24x24,嵌入维数设置为128。采纳Adam优化器对模型进行优化,最大迭代次数为50k。batch size为8,初始学习率设置为0.001。 4.3后果剖析 ...

March 30, 2023 · 1 min · jiezi

关于机器学习:构建基于深度学习神经网络协同过滤模型NCF的视频推荐系统Python310Tensorflow211

毋庸讳言,和传统架构(BS开发/CS开发)相比,人工智能技术的确有肯定的根底门槛,它注定不是大众化,普适化的货色。但也不能否定,人工智能技术也具备像传统架构一样“套路化”的流程,也就是说,咱们大可不必本人手动构建基于神经网络的机器学习零碎,间接应用深度学习框架反而更加简略,深度学习能够帮忙咱们主动地从原始数据中提取特色,不须要手动抉择和提取特色。 之前咱们手动构建了一个小型的神经网络,解决了机器学习的分类问题,本次咱们利用深度学习框架Tensorflow2.11构建一套基于神经网络协同过滤模型(NCF)的视频举荐零碎,解决预测问题,实现一个真正能够落地的我的项目。 举荐零碎倒退历程“小伙子,要光盘吗?新的到货了,内容相当精彩!” 大概20年前,在北京中关村的街头,一位抱着婴儿的中年大妈兴奋地拽着笔者的胳臂,载歌载舞地举荐着她的“产品”,大略这就是最原始的举荐零碎雏形了。 事实上,时至今日,仍然有相似产品应用这样的套路,不管三七二十一,弄个首页大Banner,间接怼用户脸上,且不论用户感不感兴趣,有没有用户点击和转化,这种强买强卖式的举荐,着实不怎么令人欢快。 所以举荐零碎解决的痛点应该是用户的趣味需要,给用户举荐喜爱的内容,才是举荐零碎的外围。 于是乎,启发式举荐算法(Memory-based algorithms)就应运而生了。 启发式举荐算法易于实现,并且举荐后果的可解释性强。启发式举荐算法又能够分为两类: 基于用户的协同过滤(User-based collaborative filtering):次要思考的是用户和用户之间的类似度,只有找出类似用户喜爱的物品,并预测指标用户对对应物品的评分,就能够找到评分最高的若干个物品举荐给用户。举个例子,李老师和闫老师领有类似的电影爱好,当新电影上映后,李老师对其示意喜爱,那么就能将这部电影举荐给闫老师。 基于物品的协同过滤(Item-based collaborative filtering):次要思考的是物品和物品之间的类似度,只有找到了指标用户对某些物品的评分,那么就能够对类似度高的相似物品进行预测,将评分最高的若干个类似物品举荐给用户。举个例子,如果用户A、B、C给书籍X,Y的评分都是5分,当用户D想要买Y书籍的时候,零碎会为他举荐X书籍,因为基于用户A、B、C的评分,零碎会认为喜爱Y书籍的人在很大水平上会喜爱X书籍。 启发式协同过滤算法是一种联合了基于用户的协同过滤和基于我的项目的协同过滤的算法,它通过启发式规定来预测用户对物品的评分。 然而,启发式协同过滤算法也存在一些缺点: 难以解决冷启动问题:当一个用户或一个物品没有足够的评分数据时,启发式协同过滤算法无奈对其进行无效的预测,因为它须要依赖于已有的评分数据。 对数据稠密性敏感:如果数据集中存在大量的缺失值,启发式协同过滤算法的预测准确率会受到影响,因为它须要依赖于残缺的评分数据来进行预测。 算法的可解释性较差:启发式协同过滤算法的预测后果是通过启发式规定得出的,这些规定可能很难被解释和了解。 受限于启发式规定的品质:启发式协同过滤算法的预测准确率受到启发式规定的品质影响,如果启发式规定得不到无效的优化和更新,算法的性能可能会受到影响。 说白了,这种基于启发式的协同过滤算法,很容易陷入一个小范畴的窘境,就是如果某个用户特地喜爱体育的视频,那么这种零碎就会玩命地举荐体育视频,实际上这个人很有可能也喜爱艺术类的视频,然而囿于冷启动问题,无奈进行举荐。 为了解决下面的问题,基于神经网络的协同过滤算法诞生了,神经网络的协同过滤算法能够通过将用户和物品的特征向量作为输出,来预测用户对新物品的评分,从而解决冷启动问题。 对数据稠密性的鲁棒性:神经网络的协同过滤算法能够主动学习用户和物品的特征向量,并可能通过这些向量来预测评分,因而对于数据稠密的状况也能进行无效的预测。 更好的预测准确率:神经网络的协同过滤算法能够通过多层非线性变换来学习用户和物品之间的简单关系,从而可能进步预测准确率。 可解释性和灵活性:神经网络的协同过滤算法能够通过调整网络结构和参数来优化预测准确率,并且能够通过可视化办法来解释预测后果。 所以基于神经网络协同过滤模型是目前举荐零碎的支流状态。 基于稠密矩阵的视频完播数据首先结构咱们的数据矩阵test.csv文件: User,Video 1,Video 2,Video 3,Video 4,Video 5,Video 6 User1,10,3,,,, User2,,10,,10,5,1 User3,,,9,,, User4,6,1,,8,,9 User5,1,,1,,10,4 User6,1,4,1,,10,1 User7,,2,1,2,,8 User8,,,,1,, User9,1,,10,,3,1这里横轴是视频数据,纵轴是用户,对应的数据是用户对于视频的完播水平,10代表看完了,1则代表只看了百分之十,留空的代表没有看。 编写ncf.py脚本,将数据读入内存并输入: import pandas as pd # set pandas to show all columns without truncation and line breaks pd.set_option('display.max_columns', 1000) pd.set_option('display.width', 1000) # data = np.loadtxt('data/test-data.csv', delimiter=',', dtype=int, skiprows=1,) data = pd.read_csv('data/test-data.csv') print(data)程序返回: ...

March 30, 2023 · 4 min · jiezi

关于机器学习:干货10个C4D必备插件让工作事半功倍

明天我要跟大家分享一些理论工作中罕用的C4D插件,这些插件能让工作事倍功半。话不多说,上面就一一介绍这10个C4D必备插件吧:1、超级独显插件(MagicSolo)反对:R12 - R21 win/mac这个应该是我本人在用C4D做模型过程中,最罕用的一个插件了。咱们在建模过程中,常常须要独显局部构造,不便咱们察看和调整,有了这个就太不便了。2、对齐高空插件(Drop2Floor)反对:R14 – R25 Win/Mac在3D设计中,常常须要把模型搁置到高空上,或者放弃多物件底部对齐。手动对齐会很麻烦,有了这个对齐高空插件就十分实用,不管模型在什么地位都能一键对齐高空。我感觉它也是C4D必备插件之一。3、主动重命名插件(Auto_Rename)反对:R14-R18 win/Mac有时候咱们的模型列表中有很多相似的模型,须要进行重命名。尤其是做绑定的时候,很多模型构造还须要名称标准化,不便后续做对称和治理,手动一一改太麻烦,那么此时这个工具就十分好用了。它能够一键重命名多层,能够取新名字也能够在原名后增加序号,十分实用。4、渲染预览插件(MagicPreview)反对:R13 – R23+ win/Mac有时候咱们在做3D场景的时候,比方这次在家用我本人的mac笔记本就没法用OC之类的实时预览插件。如果用默认渲染器想看成果,效率很低。如果装上这个预览插件,边做边渲染,也是十分不便的。5、中心点归位插件(MagicCenter)反对:R13 – R21+ win/MacMagicCenter是一个十分弱小的插件,它能够疾速将一个对象或者多个对象的核心归位。还能够用于抉择组件的顶点、边或面疾速居中坐标轴。尽管用C4D自带的重置轴心性能也能够做到归位,但还是有点没法,操作步骤比拟繁琐,这个插件能够一键归位,十分不便。6、主动生成绳索插件(Reeper)反对:R16-R20/R21 Win/Mac像一些绳索之类的模型,手动建模会比拟麻烦。而绳索这种模型的特色也比拟显著,基本上都不会有太大的变动,非常适合用插件来制作。这个插件就是这样来的,解决了重复劳动。它的应用也是十分不便的,我会在教程中跟大家说到具体用法。 7、疾速缝合线插件(QuickStitch)反对:R19-R23 win/Mac跟下面那个主动绳索插件比拟相似的,还有一个缝合线插件。有时候,咱们想给相似鞋子、衣服之类的模型减少缝合线,晋升细节,手动建模会比拟麻烦。之前试过在ZBrush中用笔刷做缝合线,尽管也不便但学习老本略高,而在C4D中用这个插件做,就非常简单了。8、 超级布尔插件(Meshboolean)反对:R17-R25 win/Mac咱们平时做一些简略物件应用默认的布尔性能个别也没啥问题,但波及到一些须要疾速倒角,多构造等简单布尔,默认布尔就搞不定了。如果不做动画只做惯例渲染,手动布线比较复杂也没必要。此时用这个插件,就能够十分轻松的对一个模型做屡次布尔运算,实现简单的模型构造,还能够做很多粗疏的调整,十分不便。9、挖洞插件(poly circle)反对:R19-R22 win/Mac这个插件算的是开洞神器,能够将选定的顶点和多边形转换为圆形顶点,并且还能够抉择一个参考立体以使法线方向,以及每个轴的方向和视图方向都变形。换句话说,这个插件能够在任何外表上造成圆孔。11、书签式工程菜单插件(doctor tab)反对:R18-R25 win/Mac在C4D中切换多个工程项目时,只能在顶部菜单的窗口下拉抉择切换,这个操作在找文件或者常常切换的文件的时候很麻烦。Doctor Tab这个插件能够让所有的工程像菜单一样并排显示,切换更加不便。什么时候该用插件?大家对于插件会不会遇到这种问题:不晓得什么时候想到要用插件?反正我以前是有这个问题的,插件那么多,我咋晓得什么时候该去找插件。当初我的教训是当遇到反复规律性问题时,首先就要思考是否有插件能够做。软件就是为了解放大家的工夫,所有能通过复制粘贴实现的事件,都要思考是否能够省掉。“偷懒”有时候并不是一件好事,学会正确偷懒很重要。高质量资源网站举荐最初再举荐几个高质量的资源网站,当前就不必到各个群里找人要软件了。1)各种软件破解版这里都有,应该是我目前珍藏的最齐全,更新最快的网站https://xclient.info2)各种软件正式版,插件这里很多都有http://www.gfxcamp.com/c4d-r203)各种AE资源,也会有一些C4D资源,插件,特效,你须要的动效资源,这里大部分都有https://www.lookae.com起源:本文来转载云译设计,仅供学习,如有侵权请分割删除。

March 28, 2023 · 1 min · jiezi

关于机器学习:动手造轮子自己实现人工智能神经网络ANN解决鸢尾花分类问题Golang118实现

人工智能神经网络( Artificial Neural Network,又称为ANN)是一种由人工神经元组成的网络结构,神经网络构造是所有机器学习的根本构造,换句话说,无论是深度学习还是强化学习都是基于神经网络构造进行构建。对于人工神经元,请参见:人工智能机器学习底层原理分析,人造神经元,您肯定能看懂,艰深解释把AI“黑话”转化为“白话文”。 机器学习能够解决什么问题机器学习能够帮忙咱们解决两大类问题:回归问题和分类问题,它们的次要区别在于输入变量的类型和预测指标的不同。 在回归问题中,输入变量是间断值,预测指标是预测一个数值。例如,预测房价、预测销售额等都是回归问题。通常应用回归模型,如线性回归、决策树回归、神经网络回归等来解决这类问题。回归问题的评估指标通常是均方误差(Mean Squared Error,MSE)、均匀绝对误差(Mean Absolute Error,MAE)等。 在分类问题中,输入变量是离散值,预测指标是将样本划分到不同的类别中。例如,预测邮件是否是垃圾邮件、预测图像中的物体类别等都是分类问题。通常应用分类模型,如逻辑回归、决策树分类、反对向量机、神经网络分类等来解决这类问题。分类问题的评估指标通常是准确率、精度(Precision)、召回率(Recall)等。 事实上,机器学习只能解决“能够”被解决的问题,也就是说,机器学习能帮咱们做的是进步解决问题的效率,而不是解决咱们原本解决不了的问题,说白了,机器学习只能解决人目前能解决的问题,比如说人当初不能做什么?人不能永生,不能白日飞升,也不能治愈绝症,所以你指望机器学习解决此类问题,就是痴心妄想。 同时,机器学习输出的特征参数和输入的预期后果必须有逻辑相关性,什么意思?比如说咱们想预测房价,后果特征参数输出了很多没有任何逻辑相关性的数据,比方历年水稻的出产率,这就是没有逻辑相关性的数据,这样的问题再怎么调参也是无奈通过机器学习来解决的。 此外,回归问题中有一个畛域十分引人关注,那就是预测股票价格,国内常常有人说本人训练的模型能够预测某支A股的价格走势,甚至能够精准到具体价格单位。说实话,挺滑稽的,要害是还真有人置信靠机器学习能在A股市场大杀特杀。 因为,略微有点投资教训的人都晓得,股票的历史数据和将来某个工夫点或者某个时间段的理论价格,并不存在因果关系,尤其像A股市场这种可被操控的黑盒环境,连具体特色都是暗藏的,或者说特色是什么都是未知的,你认为的特色只是你认为的,并不是市场或者政策认为的,所以你输出之前十年或者二十年的历史股票数据,你让它预测,就是在搞笑,机器学习没法帮你解决此类问题。 为什么当初GPT模型当初这么火?是因为它在NLP(自然语言剖析)畛域有了质的冲破,能够通过大数据模型分割上下文关系生成可信度高的答复,而这个上下文关系,就是咱们所谓的参数和预期后果的因果关系。 鸢尾花分类问题鸢尾花分类问题是一个经典的机器学习问题,也是神经网络入门的罕用案例之一。它的指标是通过鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度这四个特色来预测鸢尾花的种类,分为三种:山鸢尾(Iris Setosa)、变色鸢尾(Iris Versicolour)和维吉尼亚鸢尾(Iris Virginica)。 艰深来讲,就是咱们要训练一个神经网络模型,它可能依据鸢尾花的四个特色,主动地对鸢尾花的种类进行分类。 在这个案例中,咱们应用了一个蕴含一个暗藏层的神经网络,它的输出层有4个神经元,代表鸢尾花的4个特色;暗藏层有3个神经元;输入层有3个神经元,别离代表3种鸢尾花的种类: 由此可见,神经网络通常由三层组成:输出层、暗藏层和输入层。 输出层:输出层接管内部输出信号,是神经网络的终点。它的神经元数量与输出特色的数量雷同,每个神经元代表一个输出特色。输出层的次要作用是将内部输出转换为神经网络外部的信号。 暗藏层:暗藏层位于输出层和输入层之间,是神经网络的外围局部。它的神经元数量能够依据问题的复杂度自在设定,每个神经元接管上一层神经元输入的信号,并进行加权解决和激活函数解决,再将后果传递给下一层神经元。暗藏层的次要作用是对输出信号进行简单的非线性转换,提取出输出信号中的特色,从而使得神经网络可能对简单的问题进行解决。 输入层:输入层是神经网络的起点,它的神经元数量通常与问题的输入数量雷同。每个神经元代表一个输入后果,输入层的次要作用是将暗藏层解决后的信号进行进一步解决,并将最终的后果输入。 在神经网络中,输出信号从输出层开始,通过暗藏层的解决,最终达到输入层。每一层的神经元都与下一层的神经元相连,它们之间的连贯能够看成是一种权重关系,权重值代表了两个神经元之间的相关性强度。当神经网络接管到输出信号后,每个神经元都会对这些信号进行加权解决,并通过激活函数将后果输入给下一层神经元,最终造成输入后果。通过一直调整权重和激活函数,神经网络能够学习到输出和输入之间的简单非线性关系,从而对未知数据进行预测和分类等工作。 定义神经网络构造体在开始训练之前,咱们先定义一些须要的构造体和函数: // neuralNet contains all of the information // that defines a trained neural network. type neuralNet struct { config neuralNetConfig wHidden *mat.Dense bHidden *mat.Dense wOut *mat.Dense bOut *mat.Dense } // neuralNetConfig defines our neural network // architecture and learning parameters. type neuralNetConfig struct { inputNeurons int outputNeurons int hiddenNeurons int numEpochs int learningRate float64 }这里neuralNet是神经网络构造体,同时定义输出、暗藏和输入层神经元的配置。 ...

March 28, 2023 · 11 min · jiezi

关于机器学习:希姆计算基于-TVM-的-DSA-AI-编译器构建

本文首发自 HyperAI超神经微信公众号~ 大家好我是来自希姆计算的淡孝强,明天我将和三位共事一起来给大家分享如何在 TVM 上反对 NPU。 DSA 编译器解决的实质问题就是不同的模型须要部署到硬件上,利用各种形象层级的优化伎俩,使得模型尽量打满芯片,也就是要压缩气泡。对于怎么去调度,Halide 形容的调度三角形是这个问题的实质。 DSA 编译器要解决的次要问题是什么?首先咱们形象一个 DSA 的架构,如图所示,habana、Ascend 以及 IPU 上都是这个形象架构的实例化。个别计算核里每个核有向量、标量以及张量的计算单元。从指令的操作和数据粒度来看,不少 DSA 可能偏向于应用绝对粗粒度的指令,例如二维三维的向量和张量的指令,也有不少硬件应用细粒度的指令,例如一维的 SIMD 和 VLIW。指令间的依赖,有一些是通过显式的接口裸露让软件来管制,有的是硬件本人管制。内存是多级内存,大多是 scratchpad memory。并行有各种粒度和维度的并行,比方 stream 并行、cluster 并行、多核并行以及不同计算部件之间的流水并行。要反对这样一类架构,从编译器开发者的角度看,是从上述体系结构几个方面对 AI 编译器提出不同的需要,这部分前面咱们会开展。 从用户的角度看,首先要有一个稳固和泛化的编译器,尽量多的模型或者算子都能够编译胜利,另外,用户心愿编译器能够提供一个可编程的界面来进行算法和算子的自定义,以确保能够独立发展一些要害算法的翻新工作。最初,对于相似咱们这样的团队或者友商也会关注:怎么用 TVM 构建 AI 编译器,比方怎么治理自研和开源的 TVM 代码,怎么搭建一套高效 CI 等等。这就是咱们明天要分享的内容,上面由我的共事来讲编译优化的局部。 希姆计算王成科:DSA 的编译优化流程本局部为希姆计算工程师王成科现场分享。 首先介绍一下希姆编译实际的整体流程详情。 针对方才提到的架构个性,咱们基于 TVM 数据结构构建了自研的优化 pass 再加上对 TVM 的复用,组成了一个新模式实现:tensorturbo。 咱们看到一个比拟经典的 DSA 架构,个别会提供一些高效、定制矩阵以及向量层的多核计算外围,领有一个与之相配合的多层缓存机制,同时也会提供可并行运行的多模组执行单元。相应的咱们须要解决以下问题: 对数据计算进行切分、高效绑核以及定制指令的高效向量化;精密治理无限的片上缓存,在不同的缓存等级上做相应的数据预取;优化多模组执行的多级流水线,力求失去一个比拟好的减速比。这里红色局部(上图)显示的是整个流程里对 TVM 复用比拟高的局部,在 relay 上实现的图层相干比拟通用的优化能够间接复用,另外复用水平比拟高的是基于 TensorIR 和 custom LLIR 的算子实现局部。像咱们方才提到的跟硬件个性相干的定制优化,则须要更多自研工作。首先咱们来看在图层上自研的一项工作。关注最右边这张比拟典型的计算流图,能够看到从上到下,整体对缓存的占用及对计算的占用都在一直缩小,出现倒金字塔的状态。对于前半部分,模型规模较大时,咱们须要着重解决片上缓存驻留的问题;而后半局部,在模型规模比拟小的时候,须要解决计算单元利用率较低的问题。如果简略调整模型规模,比方调整 batch size ,较小的 batch size 能够失去较低的 latency ,而相应的 throughput 会有所升高;同样较大的 batch size 会导致 latency 较高,然而有可能进步整体 throughput。 ...

March 27, 2023 · 3 min · jiezi

关于机器学习:高斯混合模型-GMM-的详细解释

高斯混合模型(前面本文中将应用他的缩写 GMM)听起来很简单,其实他的工作原理和 KMeans 十分类似,你甚至能够认为它是 KMeans 的概率版本。 这种概率特色使 GMM 能够利用于 KMeans 无奈解决的许多简单问题。 因为KMeans的限度很多,比方: 它假如簇是球形的并且大小雷同,这在大多数事实世界的场景中是有效的。并且它是硬聚类办法,这意味着每个数据点都调配给一个集群,这也是不事实的。 在本文中,咱们将依据下面的内容来介绍 KMeans 的一个代替计划之一,高斯混合模型。 从概念上解释:高斯混合模型就是用高斯概率密度函数(正态分布曲线)准确地量化事物,它是一个将事物合成为若干的基于高斯概率密度函数(正态分布曲线)造成的模型。 高斯混合模型 (GMM) 算法的工作原理正如后面提到的,能够将 GMM 称为 概率的KMeans,这是因为 KMeans 和 GMM 的终点和训练过程是雷同的。 然而,KMeans 应用基于间隔的办法,而 GMM 应用概率办法。 GMM 中有一个次要假如:数据集由多个高斯分布组成,换句话说,GMM 模型能够看作是由 K 个单高斯模型组合而成的模型,这 K 个子模型是混合模型的隐变量(Hidden variable) 上述散布通常称为多模型散布。 每个峰代表咱们数据集中不同的高斯分布或聚类。 咱们肉眼能够看到这些散布,然而应用公式如何预计这些散布呢? 在解释这个问题之前,咱们先创立一些高斯分布。这里咱们生成的是多元正态分布; 它是单变量正态分布的更高维扩大。 让咱们定义数据点的均值和协方差。 应用均值和协方差,咱们能够生成如下散布。 # Set the mean and covariance mean1= [0, 0] mean2= [2, 0] cov1= [[1, .7], [.7, 1]] cov2= [[.5, .4], [.4, .5]] # Generate data from the mean and covariance data1=np.random.multivariate_normal(mean1, cov1, size=1000) data2=np.random.multivariate_normal(mean2, cov2, size=1000)可视化一下生成的数据 ...

March 27, 2023 · 3 min · jiezi

关于机器学习:万字详解AI开发中的数据预处理清洗

编者按:在现实生活中,大多数数据都须要进行荡涤和预处理,以便在应用数据时达到最佳成果。机器学习流程只能解决数字,因而须要找到一种办法将非数字特色转化为数字示意。本文还介绍了三种缺失值类型:齐全缺失、随机缺失和非随机缺失,并传授如何应用Python来检测和解决缺失值。 通过浏览本文,我置信你将理解什么是数据荡涤,还能把握数据荡涤的步骤以及如何进行实操。 以下是译文,Enjoy! 作者 | Fuad Adio 编译 | 岳扬 数据荡涤(Data Cleaning)是通过批改、增加或删除数据的形式为数据分析做筹备的过程,这个过程通常也被称为数据预处理(Data Preprocessing)。对于数据科学家和机器学习工程师来说,熟练掌握数据荡涤全流程至关重要,因为数据预处理后的品质将间接影响他们或训练的模型从数据中取得的所有论断和观点(insights) 。 在这篇博文中,咱们将重点讲述类别型特色(categorical feature)方面的数据清理概念(本文第5局部),给出适合的图片以帮忙了解,并提供代码演示等。 在本文完结时,我置信你不仅会理解什么是数据荡涤,还能完满地把握数据荡涤的步骤,如何进行实操,以及最重要的是如何从你的数据中失去最好的后果。 01 为什么咱们须要荡涤数据?有时,在咱们可能从数据中提取有用的信息之前,须要对数据进行荡涤/预处理。大多数现实生活中的数据都有很多须要解决的中央,如缺失值、非信息特色等,因而,在应用数据之前,咱们始终须要对其进行荡涤,以便在应用数据时达到最佳成果。 以机器学习流程为例,它的工作对象只有数字。如果咱们打算应用具备文本、日期工夫特色和其余非数字特色的数据,咱们须要找到一种办法,用数字来示意它们,而不失落它们所携带的信息。 比如说一个简略的逻辑回归模型只是用一个线性函数将因变量映射到自变量上,如:y= wx + b。其中,w是权重,能够是任何数字,b是偏差,也是一个数字。 如果给你一组数据;[小、中、大],你会发现不可能计算出:y=w*small+b。 但如果你把“小”编码为1,“中”编码为2,“大”的编码为3,从而把你的数据转化为[1,2,3],你会发现你不仅可能计算y=w*1+b,而且其中编码的信息依然被保留。 02 数据荡涤有哪些步骤?数据荡涤是咱们在为数据分析做筹备的过程中对数据进行的一系列操作的统称。 数据荡涤的步骤包含: 解决缺失值(Handling missing values)对类别型特色进行编码(Encoding categorical features)异样值检测(Outliers detection)变换(Transformations) ...后续咱们将重点开展解决缺失值和对类别型特色进行编码。03 解决缺失值(Handling missing values)在进行数据预处理时遇到的最常见的问题之一就是咱们数据中存在缺失值。这个状况是十分常见的,可能因为 : 填写数据的人无意或无心的脱漏,或者数据基本不适宜填在此处。工作人员将数据输出电脑时呈现脱漏。数据科学家如果不留神,可能会从蕴含缺失值的数据中得出谬误的推论,这就是为什么咱们须要钻研缺失值并学会无效地解决它。 晚期的机器学习库(比方scikit learn)不容许将缺失值传入。这就会带来肯定的挑战,因为数据科学家在将数据传递给scikit learn ML模型之前,须要迭代很多办法来解决缺失值。最新的机器学习模型和平台曾经解除了这一阻碍,特地是基于梯度提升机(gradient boosting machines)的一些算法或工具,如Xgboost、Catboost、LightGBM等等。 我特地看好的是Catboost办法,它容许用户在三个选项(Forbidden, Min, and Max)中进行抉择。Forbidden将缺失值视为谬误,而Min将缺失值设定为小于特定特色(列)中的所有其余值。这样,咱们就能够必定,在对特色进行根本的决策树决裂(decision tree splitting)时,这些缺失值也会被思考在内。 LightGBM[1]和XGboost[2]也能以相当不便的形式解决缺失值。然而,在进行预处理时,要尽可能多地尝试各种办法。应用像咱们下面探讨的那些库,其余的工具,如automl等等。 缺失值个别分为三类,即: 1) 齐全随机缺失(MCAR) 。如果咱们没有任何信息、理由或任何能够帮忙计算它的货色,那么这个缺失值就是齐全随机缺失。例如,"我是一个很困的研究生,不小心把咖啡打翻在咱们收集的纸质调查表上,让咱们失去了所有原本咱们会有的数据。" 2) 随机缺失(MAR) 。如果咱们有信息、理由或任何货色(特地是来自其余已知值)能够帮忙计算,那么这个缺失值就是随机缺失。例如,"我进行一项考察,其中有一个对于个人收入的问题。然而女性不太可能间接答复对于支出的问题。" 3) 非随机缺失(NMAR) 。缺失的变量的值与它缺失的起因无关。例如,"如果我进行的考察包含一个对于个人收入的问题。那些低收入的人显著不太可能答复这个问题"。因而,咱们晓得为什么这种数据点可能缺失。 04 如何应用Python检测缺失值?在咱们解决缺失值之前,咱们理当学习如何检测它们,并依据缺失值的数量、咱们有多少数据等等来决定如何解决咱们的数据。我喜爱并常常应用的一个办法是为某一列设置一个阈值,以决定它是能够修复还是无奈修复。 上面,你会看到一个函数,它实现了咱们在之前探讨的一些想法。 def missing_removal(df, thresh, confirm= None):    holder= {} for col in df.columns:        rate= df[col].isnull().sum() / df.shape[0] if rate > thresh:            holder[col]= rate if confirm==True:        df.drop(columns= [i for i in holder], inplace= True) return df else: print(f' Number of columns that have Nan values above the thresh specified{len(holder)}') return holderQuick note ...

March 27, 2023 · 3 min · jiezi

关于机器学习:机器学习系列入门系列七基于英雄联盟数据集的LightGBM的分类预测

1. 机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测本我的项目链接:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1.1 LightGBM原理简介LightGBM是2017年由微软推出的可扩大机器学习零碎,是微软旗下DMKT的一个开源我的项目,它是一款基于GBDT(梯度晋升决策树)算法的分布式梯度晋升框架,为了满足缩短模型计算工夫的需要,LightGBM的设计思路次要集中在减小数据对内存与计算性能的应用,以及缩小多机器并行计算时的通信代价。 LightGBM能够看作是XGBoost的降级豪华版,在取得与XGBoost近似精度的同时,又提供了更快的训练速度与更少的内存耗费。正如其名字中的Light所蕴含的那样,LightGBM在大规模数据集上跑起来更加优雅轻捷,一经推出便成为各种数据比赛中刷榜夺冠的神兵利器。 LightGBM底层实现了GBDT算法,并且增加了一系列的新个性: 基于直方图算法进行优化,使数据存储更加不便、运算更快、鲁棒性强、模型更加稳固等。提出了带深度限度的 Leaf-wise 算法,摈弃了大多数GBDT工具应用的按层成长 (level-wise) 的决策树成长策略,而应用了带有深度限度的按叶子成长策略,能够升高误差,失去更好的精度。提出了单边梯度采样算法,排除大部分小梯度的样本,仅用剩下的样本计算信息增益,它是一种在缩小数据量和保障精度上均衡的算法。提出了互斥特色捆绑算法,高维度的数据往往是稠密的,这种稠密性启发咱们设计一种无损的办法来缩小特色的维度。通常被捆绑的特色都是互斥的(即特色不会同时为非零值,像one-hot),这样两个特色捆绑起来就不会失落信息。LightGBM是基于CART树的集成模型,它的思维是串联多个决策树模型独特进行决策。 那么如何串联呢?LightGBM采纳迭代预测误差的办法串联。举个艰深的例子,咱们当初须要预测一辆车价值3000元。咱们构建决策树1训练后预测为2600元,咱们发现有400元的误差,那么决策树2的训练指标为400元,但决策树2的预测后果为350元,还存在50元的误差就交给第三棵树……以此类推,每一颗树用来预计之前所有树的误差,最初所有树预测后果的求和就是最终预测后果! LightGBM的基模型是CART回归树,它有两个特点:(1)CART树,是一颗二叉树。(2)回归树,最初拟合后果是间断值。 LightGBM模型能够示意为以下模式,咱们约定$f_t(x)$示意前$t$颗树的和,$h_t(x)$示意第$t$颗决策树,模型定义如下: $f_{t}(x)=\sum_{t=1}^{T} h_{t}(x)$ 因为模型递归生成,第$t$步的模型由第$t-1$步的模型造成,能够写成: $f_{t}(x)=f_{t-1}(x)+h_{t}(x)$ 每次须要加上的树$h_t(x)$是之前树求和的误差: $r_{t, i}=y_{i}-f_{m-1}\left(x_{i}\right)$ 咱们每一步只有拟合一颗输入为$r_{t,i}$的CART树加到$f_{t-1}(x)$就能够了。 1.2 LightGBM的利用LightGBM在机器学习与数据挖掘畛域有着极为宽泛的利用。据统计LightGBM模型自2016到2019年在Kaggle平台上累积取得数据比赛前三名三十余次,其中包含CIKM2017 AnalytiCup、IEEE Fraud Detection等出名比赛。这些比赛来源于各行各业的实在业务,这些比赛问题表明LightGBM具备很好的可扩展性,在各类不同问题上都能够获得十分好的成果。 同时,LightGBM还被胜利利用在工业界与学术界的各种问题中。例如金融风控、购买行为辨认、交通流量预测、环境声音分类、基因分类、生物成分剖析等诸多畛域。尽管畛域相干的数据分析和个性工程在这些解决方案中也施展了重要作用,但学习者与实践者对LightGBM的统一抉择表明了这一软件包的影响力与重要性。 2.相干流程理解 LightGBM 的参数与相干常识把握 LightGBM 的Python调用并将其使用到英雄联盟游戏输赢预测数据集上Part1 基于英雄联盟数据集的LightGBM分类实际 Step1: 库函数导入Step2: 数据读取/载入Step3: 数据信息简略查看Step4: 可视化形容Step5: 利用 LightGBM 进行训练与预测Step6: 利用 LightGBM 进行特征选择Step7: 通过调整参数取得更好的成果3.基于英雄联盟数据集的LightGBM分类实战在实际的最开始,咱们首先须要导入一些根底的函数库包含:numpy (Python进行科学计算的根底软件包),pandas(pandas是一种疾速,弱小,灵便且易于应用的开源数据分析和解决工具),matplotlib和seaborn绘图。 #下载须要用到的数据集!wget https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/8LightGBM/high_diamond_ranked_10min.csv--2023-03-22 19:33:36-- https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/8LightGBM/high_diamond_ranked_10min.csv正在解析主机 tianchi-media.oss-cn-beijing.aliyuncs.com (tianchi-media.oss-cn-beijing.aliyuncs.com)... 49.7.22.39正在连接 tianchi-media.oss-cn-beijing.aliyuncs.com (tianchi-media.oss-cn-beijing.aliyuncs.com)|49.7.22.39|:443... 已连贯。已收回 HTTP 申请,正在期待回应... 200 OK长度: 1446502 (1.4M) [text/csv]正在保留至: “high_diamond_ranked_10min.csv”high_diamond_ranked 100%[===================>] 1.38M --.-KB/s in 0.04s 2023-03-22 19:33:36 (38.3 MB/s) - 已保留 “high_diamond_ranked_10min.csv” [1446502/1446502])Step1:函数库导入 ...

March 27, 2023 · 8 min · jiezi

关于机器学习:机器学习算法六基于天气数据集的XGBoost分类预测

1.机器学习算法(六)基于天气数据集的XGBoost分类预测本我的项目链接:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1.1 XGBoost的介绍与利用XGBoost是2016年由华盛顿大学陈天奇老师率领开发的一个可扩大机器学习零碎。严格意义上讲XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它外部实现了梯度晋升树(GBDT)模型,并对模型中的算法进行了诸多优化,在获得高精度的同时又放弃了极快的速度,在一段时间内成为了国内外数据挖掘、机器学习畛域中的大规模杀伤性武器。 更重要的是,XGBoost在系统优化和机器学习原理方面都进行了深刻的思考。毫不夸大的讲,XGBoost提供的可扩展性,可移植性与准确性推动了机器学习计算限度的下限,该零碎在单台机器上运行速度比过后风行解决方案快十倍以上,甚至在分布式系统中能够解决十亿级的数据。 XGBoost在机器学习与数据挖掘畛域有着极为宽泛的利用。据统计在2015年Kaggle平台上29个获奖计划中,17只队伍应用了XGBoost;在2015年KDD-Cup中,前十名的队伍均应用了XGBoost,且集成其余模型比不上调节XGBoost的参数所带来的晋升。这些实实在在的例子都表明,XGBoost在各种问题上都能够获得十分好的成果。 同时,XGBoost还被胜利利用在工业界与学术界的各种问题中。例如商店销售额预测、高能物理事件分类、web文本分类;用户行为预测、静止检测、广告点击率预测、恶意软件分类、灾祸危险预测、在线课程入学率预测。尽管畛域相干的数据分析和个性工程在这些解决方案中也施展了重要作用,但学习者与实践者对XGBoost的统一抉择表明了这一软件包的影响力与重要性。 1.2 原理介绍XGBoost底层实现了GBDT算法,并对GBDT算法做了一系列优化: 对指标函数进行了泰勒展现的二阶开展,能够更加高效拟合误差。提出了一种预计决裂点的算法减速CART树的构建过程,同时能够解决稠密数据。提出了一种树的并行策略减速迭代。为模型的分布式算法进行了底层优化。XGBoost是基于CART树的集成模型,它的思维是串联多个决策树模型独特进行决策。 那么如何串联呢?XGBoost采纳迭代预测误差的办法串联。举个艰深的例子,咱们当初须要预测一辆车价值3000元。咱们构建决策树1训练后预测为2600元,咱们发现有400元的误差,那么决策树2的训练指标为400元,但决策树2的预测后果为350元,还存在50元的误差就交给第三棵树……以此类推,每一颗树用来预计之前所有树的误差,最初所有树预测后果的求和就是最终预测后果! XGBoost的基模型是CART回归树,它有两个特点:(1)CART树,是一颗二叉树。(2)回归树,最初拟合后果是间断值。 XGBoost模型能够示意为以下模式,咱们约定$f_t(x)$示意前$t$颗树的和,$h_t(x)$示意第$t$颗决策树,模型定义如下: $f_{t}(x)=\sum_{t=1}^{T} h_{t}(x)$ 因为模型递归生成,第$t$步的模型由第$t-1$步的模型造成,能够写成: $f_{t}(x)=f_{t-1}(x)+h_{t}(x)$ 每次须要加上的树$h_t(x)$是之前树求和的误差: $r_{t, i}=y_{i}-f_{m-1}\left(x_{i}\right)$ 咱们每一步只有拟合一颗输入为$r_{t,i}$的CART树加到$f_{t-1}(x)$就能够了。 1.3 相干流程理解 XGBoost 的参数与相干常识把握 XGBoost 的Python调用并将其使用到天气数据集预测Part1 基于天气数据集的XGBoost分类实际 Step1: 库函数导入Step2: 数据读取/载入Step3: 数据信息简略查看Step4: 可视化形容Step5: 对离散变量进行编码Step6: 利用 XGBoost 进行训练与预测Step7: 利用 XGBoost 进行特征选择Step8: 通过调整参数取得更好的成果3.基于天气数据集的XGBoost分类实战3.1 EDA探索性剖析在实际的最开始,咱们首先须要导入一些根底的函数库包含:numpy (Python进行科学计算的根底软件包),pandas(pandas是一种疾速,弱小,灵便且易于应用的开源数据分析和解决工具),matplotlib和seaborn绘图。 #导入须要用到的数据集!wget https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/7XGBoost/train.csv--2023-03-22 17:33:53-- https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/7XGBoost/train.csv正在解析主机 tianchi-media.oss-cn-beijing.aliyuncs.com (tianchi-media.oss-cn-beijing.aliyuncs.com)... 49.7.22.39正在连接 tianchi-media.oss-cn-beijing.aliyuncs.com (tianchi-media.oss-cn-beijing.aliyuncs.com)|49.7.22.39|:443... 已连贯。已收回 HTTP 申请,正在期待回应... 200 OK长度: 11476379 (11M) [text/csv]正在保留至: “train.csv.2”train.csv.2 100%[===================>] 10.94M 8.82MB/s in 1.2s 2023-03-22 17:33:55 (8.82 MB/s) - 已保留 “train.csv.2” [11476379/11476379])Step1:函数库导入 ...

March 26, 2023 · 8 min · jiezi

关于机器学习:机器学习算法五基于企鹅数据集的决策树分类预测

机器学习算法(五):基于企鹅数据集的决策树分类预测本我的项目链接:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1 逻决策树的介绍和利用1.1 决策树的介绍决策树是一种常见的分类模型,在金融风控、医疗辅助诊断等诸多行业具备较为宽泛的利用。决策树的核心思想是基于树结构对数据进行划分,这种思维是人类解决问题时的本能办法。例如在婚恋市场中,女方通常会先询问男方是否有房产,如果有房产再理解是否有车产,如果有车产再看是否有稳固工作……最初得出是否要深刻理解的判断。 次要利用: 因为决策树模型中自变量与因变量的非线性关系以及决策树简略的计算方法,使得它成为集成学习中最为宽泛应用的基模型。梯度晋升树(GBDT),XGBoost以及LightGBM等先进的集成模型都采纳了决策树作为基模型,在广告计算、CTR预估、金融风控等畛域大放异彩,成为当今与神经网络等量齐观的简单模型,更是数据挖掘较量中的常客。在新的钻研中,南京大学周志华传授提出一种多粒度级联森林模型,发明了一种全新的基于决策树的深度集成办法,为咱们提供了决策树倒退的另一种可能。 同时决策树在一些明确须要可解释性或者提取分类规定的场景中被广泛应用,而其余机器学习模型在这一点很难做到。例如在医疗辅助零碎中,为了不便业余人员发现错误,经常将决策树算法用于辅助病症检测。例如在一个预测哮喘患者的模型中,医生发现测试的许多高级模型的成果十分差。在他们运行了一个决策树模型后发现,算法认为激烈咳嗽的病人患哮喘的危险很小。但医生十分分明激烈咳嗽个别都会被立即查看医治,这意味着患有激烈咳嗽的哮喘病人都会马上失去收治。用于建模的数据认为这类病人危险很小,是因为所有这类病人都失去了及时医治,所以极少有人在此之后患病或死亡。 1.2 相干流程理解 决策树 的理论知识把握 决策树 的 sklearn 函数调用并将其使用在企鹅数据集的预测中Part1 Demo实际 Step1:库函数导入Step2:模型训练Step3:数据和模型可视化Step4:模型预测Part2 基于企鹅(penguins)数据集的决策树分类实际 Step1:库函数导入Step2:数据读取/载入Step3:数据信息简略查看Step4:可视化形容Step5:利用 决策树模型 在二分类上 进行训练和预测Step6:利用 决策树模型 在三分类(多分类)上 进行训练和预测3 算法实战3.1Demo实际Step1: 库函数导入 ## 根底函数库import numpy as np ## 导入画图库import matplotlib.pyplot as pltimport seaborn as sns## 导入决策树模型函数from sklearn.tree import DecisionTreeClassifierfrom sklearn import treeStep2: 训练模型 ##Demo演示LogisticRegression分类## 结构数据集x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])y_label = np.array([0, 1, 0, 1, 0, 1])## 调用决策树回归模型tree_clf = DecisionTreeClassifier()## 调用决策树模型拟合结构的数据集tree_clf = tree_clf.fit(x_fearures, y_label)Step3: 数据和模型可视化(须要用到graphviz可视化库) ...

March 25, 2023 · 6 min · jiezi

关于机器学习:本地推理单机运行MacM1芯片系统基于大语言模型C版本LLaMA部署本地版的ChatGPT

OpenAI公司基于GPT模型的ChatGPT景色无两,眼看它起朱楼,眼看它宴宾客,FaceBook终于坐不住了,公布了同样基于LLM的人工智能大语言模型LLaMA,号称蕴含70亿、130亿、330亿和650亿这4种参数规模的模型,参数是指神经网络中的权重和偏置等可调整的变量,用于训练和优化神经网络的性能,70亿意味着神经网络中有70亿个参数,由此类推。 在一些大型神经网络中,每个参数须要应用32位或64位浮点数进行存储,这意味着每个参数须要占用4字节或8字节的存储空间。因而,对于蕴含70亿个参数的神经网络,其存储空间将别离为8 GB或12GB。 此外,神经网络的大小不仅取决于参数的数量,还取决于神经元的数目,层数和其余构造参数等。因而,70亿的神经网络可能会占用更多的存储空间,具体取决于网络的构造和实现细节。 因而这种体量的模型单机跑相对够咱们喝一壶,所以本次应用最小的LLaMA 7B模型进行测试。 LLaMA我的项目装置和模型配置和Stable-Diffusion我的项目一模一样,FaceBook开源的LLaMA我的项目默认写死应用cuda模式,这也就意味着必须有 NVIDIA 的 GPU来训练和运行,不过好在大神GeorgiGerganov 用 C++ 基于 LLaMA 我的项目重写了一个跑在 CPU 上的移植版本 llama.cpp利用。 llama.cpp首先适配的就是苹果的M系列芯片,这对于果粉来说无疑是一个重大利好,首先通过命令拉取C++版本的LLaMA我的项目: git clone https://github.com/ggerganov/llama.cpp随后进入我的项目目录: llama.cpp在我的项目中,须要独自建设一个模型文件夹models: mkdir models随后去huggingface官网下载LLaMA的7B模型文件:https://huggingface.co/nyanko7/LLaMA-7B/tree/main 是的,主模型文件曾经达到了13.5gb之巨,如果本地硬盘空间告急,请审慎下载。 随后在models目录建设模型子目录7B: mkdir 7B将tokenizer.model和tokenizer\_checklist.chk放入和7B平行的目录中: ➜ models git:(master) ✗ ls 7B tokenizer.model tokenizer_checklist.chk随后将checklist.chk consolidated.00.pth和params.json放入7B目录中: ➜ 7B git:(master) ✗ ls checklist.chk consolidated.00.pth params.json至此,模型就配置好了。 LLaMA模型转换因为咱们没有应用FaceBook的原版我的项目,所以它的模型还须要进行转换,也就是转换为以后C++版本的LLaMA能够运行的模型。 这里通过Python脚本进行转换操作: python3 convert-pth-to-ggml.py models/7B/ 1第一个参数是模型所在目录,第二个参数为转换时应用的浮点类型,应用 float32,转换的后果文件会大一倍,当该参数值为 1时,则应用 float16 这个默认值,这里咱们应用默认数据类型。 程序输入: ➜ llama.cpp git:(master) ✗ python convert-pth-to-ggml.py models/7B/ 1 {'dim': 4096, 'multiple_of': 256, 'n_heads': 32, 'n_layers': 32, 'norm_eps': 1e-06, 'vocab_size': -1} n_parts = 1 Processing part 0 Processing variable: tok_embeddings.weight with shape: torch.Size([32000, 4096]) and type: torch.float16 Processing variable: norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: output.weight with shape: torch.Size([32000, 4096]) and type: torch.float16 Processing variable: layers.0.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.0.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.0.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.0.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.0.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.0.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.0.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.0.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.0.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.1.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.1.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.1.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.1.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.1.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.1.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.1.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.1.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.1.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.2.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.2.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.2.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.2.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.2.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.2.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.2.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.2.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.2.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.3.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.3.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.3.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.3.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.3.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.3.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.3.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.3.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.3.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.4.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.4.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.4.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.4.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.4.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.4.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.4.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.4.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.4.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.5.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.5.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.5.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.5.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.5.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.5.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.5.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.5.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.5.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.6.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.6.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.6.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.6.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.6.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.6.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.6.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.6.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.6.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.7.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.7.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.7.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.7.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.7.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.7.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.7.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.7.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.7.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.8.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.8.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.8.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.8.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.8.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.8.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.8.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.8.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.8.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.9.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.9.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.9.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.9.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.9.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.9.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.9.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.9.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.9.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.10.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.10.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.10.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.10.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.10.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.10.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.10.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.10.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.10.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.11.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.11.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.11.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.11.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.11.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.11.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.11.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.11.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.11.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.12.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.12.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.12.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.12.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.12.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.12.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.12.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.12.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.12.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.13.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.13.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.13.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.13.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.13.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.13.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.13.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.13.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.13.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.14.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.14.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.14.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.14.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.14.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.14.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.14.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.14.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.14.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.15.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.15.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.15.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.15.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.15.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.15.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.15.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.15.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.15.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.16.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.16.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.16.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.16.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.16.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.16.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.16.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.16.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.16.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.17.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.17.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.17.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.17.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.17.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.17.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.17.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.17.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.17.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.18.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.18.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.18.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.18.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.18.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.18.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.18.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.18.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.18.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.19.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.19.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.19.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.19.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.19.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.19.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.19.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.19.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.19.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.20.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.20.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.20.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.20.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.20.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.20.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.20.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.20.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.20.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.21.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.21.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.21.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.21.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.21.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.21.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.21.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.21.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.21.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.22.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.22.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.22.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.22.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.22.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.22.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.22.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.22.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.22.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.23.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.23.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.23.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.23.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.23.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.23.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.23.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.23.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.23.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.24.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.24.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.24.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.24.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.24.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.24.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.24.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.24.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.24.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.25.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.25.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.25.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.25.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.25.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.25.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.25.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.25.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.25.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.26.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.26.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.26.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.26.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.26.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.26.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.26.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.26.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.26.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.27.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.27.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.27.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.27.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.27.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.27.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.27.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.27.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.27.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.28.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.28.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.28.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.28.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.28.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.28.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.28.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.28.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.28.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.29.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.29.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.29.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.29.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.29.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.29.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.29.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.29.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.29.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.30.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.30.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.30.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.30.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.30.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.30.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.30.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.30.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.30.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.31.attention.wq.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.31.attention.wk.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.31.attention.wv.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.31.attention.wo.weight with shape: torch.Size([4096, 4096]) and type: torch.float16 Processing variable: layers.31.feed_forward.w1.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.31.feed_forward.w2.weight with shape: torch.Size([4096, 11008]) and type: torch.float16 Processing variable: layers.31.feed_forward.w3.weight with shape: torch.Size([11008, 4096]) and type: torch.float16 Processing variable: layers.31.attention_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Processing variable: layers.31.ffn_norm.weight with shape: torch.Size([4096]) and type: torch.float16 Converting to float32 Done. Output file: models/7B//ggml-model-f16.bin, (part 0)能够看到,如果转换胜利,会在models/7B/目录生成一个C++能够调用的ggml-model-f16.bin模型文件。 ...

March 24, 2023 · 18 min · jiezi

关于机器学习:使用-Python-探索-感知机-算法

动动发财的小手,点个赞吧! 从实践到实际,咱们将从简要的实践介绍开始钻研感知机(器)学习办法,而后实现。 在这篇博文的最初,您将可能理解何时以及如何应用这种机器学习算法,分明地理解它的所有优缺点。 1. 实践1.1. 引言感知器有其存在的生物学起因。咱们的神经元一直从其余神经元接管能量,但只有在它们接管到的能量大于或等于一定量后,它们才会决定“激活”并收回本人的信号。 让咱们从最初开始。给定一个 4 维输出,这个输出用 4 个不同的权重进行解决,总和进入激活函数,你就失去了后果。 讲的更革除一点,假如您有这张功能表(列)X1、X2、X3 和 X4。这些特色是 4 个不同的值,用于表征数据集的单个实例(行)。 这个实例须要进行二进制分类,这样你就会有一个额定的值 t,它是指标,能够是 -1 或 1。 感知机算法将 X1、X2、X3 和 X4 乘以一组 4 个权重。出于这个起因,咱们认为感知器是一种线性算法。 而后,激活函数将利用于此乘法的后果。 这是整个过程中的方程式: 其中 a 是所谓的激活函数。 当然,输出能够是 N 维的(N 不肯定是四维),这样您也能够应用 N 权重 + 1 偏差。尽管如此,纯感知器算法旨在用于二进制分类。 当然,y=a(w_1x_1+…+w_4x_4)的后果须要在-1到1之间。换句话说,归根结底,所谓的激活函数须要可能给你一个分类。 N 维输出与 N 维权重的乘积将为您提供一个数字。那么如果这个数字大于 0,你的算法会说“1”,否则会说“-1”。 这就是它的运行形式,也是它做出决定的形式。 1.2. 损失函数咱们都晓得机器学习算法带有损失函数。在这种状况下,损失函数是谬误分类点的加权和。 假如您有一个分类不正确的点。这意味着,例如,将您的参数与您的输出相乘,您将失去 -0.87 的最终后果。 好的,重点来了,谬误分类,记得吗?因而,这意味着该点 (t=1) 的指标的确为“1”。所以这意味着如果你做这个乘法: 你实际上失去了一个数,通知你你错了多少,你应该扭转你的权重和 bias 来做更好的分类工作。 一般来说,损失函数是所有谬误分类点的负和: 其中S是谬误分类点的汇合。 咱们将开始优化这个损失函数,当然咱们想要最小化。 ...

March 23, 2023 · 4 min · jiezi

关于机器学习:MAA连接mumuX模拟器首次调教

首先勾选"自动检测连贯"和"始终检测",不点应用"adb Lite"而后点击连贯,第一次会失败,没关系,接着敞开下面2个(敞开"自动检测连贯"和"始终检测")关上"应用ADB lite"再次点击连贯即可

March 23, 2023 · 1 min · jiezi

关于机器学习:机器学习算法三基于horsecolic数据的KNN近邻knearest-neighbors预测分类

机器学习算法(三):基于horse-colic数据的KNN近邻(k-nearest neighbors)预测分类我的项目链接参考:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1 KNN的介绍和利用1.1 KNN的介绍kNN(k-nearest neighbors),中文翻译K近邻。咱们经常听到一个故事:如果要理解一个人的经济程度,只须要晓得他最好的5个敌人的经济能力,对他的这五个人的经济程度求均匀就是这个人的经济程度。这句话外面就蕴含着kNN的算法思维。 <img src='https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/3K/knn_demo.png'/> 示例 :如上图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,因为红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,因为蓝色四方形比例为3/5,因而绿色圆被赋予蓝色四方形类。 1) KNN建设过程 1 给定测试样本,计算它与训练集中的每一个样本的间隔。2 找出间隔近期的K个训练样本。作为测试样本的近邻。3 根据这K个近邻归属的类别来确定样本的类别。2) 类别的断定 ①投票决定,多数遵从少数。取类别最多的为测试样本类别。 ②加权投票法,根据计算得出间隔的远近,对近邻的投票进行加权,间隔越近则权重越大,设定权重为间隔平方的倒数。 1.2 KNN的利用KNN尽管很简略,然而人们常说"大道至简",一句"物以类聚,人以群分"就能揭开其面纱,看似简略的KNN即能做分类又能做回归,还能用来做数据预处理的缺失值填充。因为KNN模型具备很好的解释性,个别状况下对于简略的机器学习问题,咱们能够应用KNN作为Baseline,对于每一个预测后果,咱们能够很好的进行解释。举荐零碎的中,也有着KNN的影子。例如文章举荐零碎中,对于一个用户A,咱们能够把和A最相近的k个用户,浏览过的文章推送给A。 机器学习畛域中,数据往往很重要,有句话叫做:"数据决定工作的下限, 模型的指标是有限靠近这个下限"。能够看到好的数据十分重要,然而因为各种起因,咱们失去的数据是有缺失的,如果咱们可能很好的填充这些缺失值,就可能失去更好的数据,以至于训练进去更鲁棒的模型。接下来咱们就来看看KNN如果做分类,怎么做回归以及怎么填充空值。 2 实验室手册2.1 试验环境1. python3.72. numpy >= '1.16.4'3. sklearn >= '0.23.1'2.2 学习指标理解KNN怎么做分类问题理解KNN如何做回归理解KNN怎么做空值填充, 如何应用knn构建带有空值的pipeline2.3 代码流程二维数据集--knn分类 Step1: 库函数导入Step2: 数据导入Step3: 模型训练&可视化Step4: 原理简析莺尾花数据集--kNN分类 Step1: 库函数导入Step2: 数据导入&剖析Step3: 模型训练Step4: 模型预测&可视化模仿数据集--kNN回归 Step1: 库函数导入Step2: 数据导入&剖析Step3: 模型训练&可视化马绞痛数据--kNN数据预处理+kNN分类pipeline Step1: 库函数导入Step2: 数据导入&剖析Step3: KNNImputer空值填充--应用和原理介绍Step4: KNNImputer空值填充--欧式间隔的计算Step5: 基于pipeline模型预测&可视化2.4 算法实战2.4.1 Demo数据集--kNN分类Step1: 库函数导入 import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn import datasetsStep2: 数据导入 ...

March 23, 2023 · 6 min · jiezi

关于机器学习:机器学习算法二-基于鸢尾花数据集的朴素贝叶斯Naive-Bayes预测分类

机器学习算法(二): 基于鸢尾花数据集的奢侈贝叶斯(Naive Bayes)预测分类我的项目链接参考:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1. 实验室介绍1.1 试验环境1. python3.72. numpy >= '1.16.4'3. sklearn >= '0.23.1'1.2 奢侈贝叶斯的介绍奢侈贝叶斯算法(Naive Bayes, NB) 是利用最为宽泛的分类算法之一。它是基于贝叶斯定义和特色条件独立假如的分类器办法。因为奢侈贝叶斯法基于贝叶斯公式计算失去,有着松软的数学根底,以及稳固的分类效率。NB模型所需预计的参数很少,对缺失数据不太敏感,算法也比较简单。当年的垃圾邮件分类都是基于奢侈贝叶斯分类器辨认的。 什么是条件概率,咱们从一个摸球的例子来了解。咱们有两个桶:灰色桶和绿色桶,一共有7个小球,4个蓝色3个紫色,散布如下图: <img src="http://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/2NaiveBayes/ball_ab.png" /> 从这7个球中,随机抉择1个球是紫色的概率p是多少?抉择过程如下: 先抉择桶再从抉择的桶中抉择一个球$$p(球=紫色) \\=p(抉择灰桶) \cdot p(从灰桶中抉择紫色) + p(抉择绿桶) \cdot p(从灰桶中抉择紫色) \\=\frac{1}{2} \cdot \frac{2}{4} + \frac{1}{2} \cdot \frac{1}{2}$$ 上述咱们抉择小球的过程就是条件概率的过程,在抉择桶的色彩的状况下是紫色的概率,另一种计算条件概率的办法是贝叶斯准则。 贝叶斯公式是英国数学家提出的一个数据公式: $$p(A|B)=\frac{p(A,B)}{p(B)}=\frac{p(B|A) \cdot p(A)}{\sum_{a \in ℱ_A}p(B|a) \cdot p(a)}$$ p(A,B):示意事件A和事件B同时产生的概率。 p(B):示意事件B产生的概率,叫做先验概率;p(A):示意事件A产生的概率。 p(A|B):示意当事件B产生的条件下,事件A产生的概率叫做后验概率。 p(B|A):示意当事件A产生的条件下,事件B产生的概率。 咱们用一句话了解贝叶斯:世间很多事都存在某种分割,假如事件A和事件B。人们经常应用曾经产生的某个事件去推断咱们想要晓得的之间的概率。例如,医生在确诊的时候,会依据病人的舌苔、心跳等来判断病人得了什么病。对病人来说,只会关注得了什么病,医生会通道曾经产生的事件来确诊具体的状况。这里就用到了贝叶斯思维,A是曾经产生的病人症状,在A产生的条件下是B_i的概率。 1.3 奢侈贝叶斯的利用奢侈贝叶斯算法假如所有特色的呈现互相独立互不影响,每一特色等同重要,又因为其简略,而且具备很好的可解释性个别。绝对于其余精心设计的更简单的分类算法,奢侈贝叶斯分类算法是学习效率和分类成果较好的分类器之一。奢侈贝叶斯算法个别利用在文本分类,垃圾邮件的分类,信用评估,钓鱼网站检测等。 2. 实验室手册2.1 学习指标把握贝叶斯公式联合两个实例理解贝奢侈叶斯的参数估计把握贝叶斯预计2.2 代码流程Part 1. 莺尾花数据集--贝叶斯分类 Step1: 库函数导入Step2: 数据导入&剖析Step3: 模型训练Step4: 模型预测Step5: 原理简析Part 2. 模仿离散数据集--贝叶斯分类 Step1: 库函数导入Step2: 数据导入&剖析Step3: 模型训练&可视化Step4: 原理简析2.3 算法实战莺尾花数据集--贝叶斯分类Step1: 库函数导入 ...

March 23, 2023 · 2 min · jiezi

关于机器学习:SLAM在增强现实AR中的作用是什么

编辑:一点人工一点智能原文:SLAM在加强事实(AR)中的作用是什么? 00  前言提起来SLAM,咱们就会想到无人驾驶,然而SALM的利用不仅是无人驾驶,其中还有AR(加强事实)。很多内容都是提到SLAM在AR中很重要,然而为什么要用SLAM,SLAM在AR中又到底扮演者什么样的角色? 01  SLAM 在加强事实中表演什么角色?SLAM或同时定位与地图构建是机器人和其余自主零碎应用的一种技术,用于构建周围环境的地图,同时跟踪本人在该地图中的地位。对于任何须要导航及其周围环境的零碎来说,这都是一项基本功能,无论是绘制火星外表的火星探测器还是穿过城市街道的主动驾驶汽车。只管SLAM算法曾经存在了很多年,但随着咱们开始摸索加强事实(AR)的世界,它们变得越来越重要。在AR利用中,咱们必须晓得设施的准确地位和方向,以便将数字内容正确叠加到事实世界中。这就是SLAM的用武之地。通过应用SLAM,AR设施能够不断更新他们对四周世界的了解,确保数字内容与事实世界正确对齐。SLAM算法有很多种,每种算法都有本人的优缺点。有些更善于解决动静环境,有些则在计算资源方面更无效。为特定利用抉择正确的SLAM算法是一项重要决策,适合的算法可能会对系统的整体性能产生重大影响。在AR世界中,SLAM对于创立真切可信的体验至关重要。如果没有SLAM,AR将只是一个噱头,因为数字内容将随机搁置,并且无奈与事实世界正确交互。然而,借助SLAM,AR有可能彻底改变咱们与周围环境的互动形式。 02  SLAM 如何用于加强事实?尽管SLAM有许多不同的办法,但它们都有一个雷同的根本指标:创立环境地图并跟踪AR设施在该地图中的地位。而后,能够应用此信息以天然和真切的形式将虚构对象叠加到事实世界中,这样也使得AR设施能够有更好地沉迷感。在加强事实中应用SLAM的另一个益处是,它能够用来改善虚构对象的跟踪。如果将虚构对象搁置在已由 SLAM 零碎构建的环境中,则当用户到处挪动时,能够更精确地跟踪该对象。例如,这能够用来创立更真切的加强事实游戏,或者进步Siri或Cortana等虚构助手的准确性。最初,SLAM还可用于进步加强事实利用的效率。通过预加载环境地图,加强事实零碎能够防止一直从新扫描环境。不过,这可能会耗费大量的解决能力和电池寿命。尽管在加强事实中应用SLAM有许多潜在的益处,但也有一些挑战须要克服。最大的挑战之一是SLAM零碎须要可能在各种不同的环境中工作,因为每个环境都有本人独特的性能和挑战。另一个挑战是SLAM零碎须要可能与各种不同的传感模式一起工作,例如摄像头,激光雷达和雷达。只管存在挑战,但在加强事实中应用SLAM的潜在益处是微小的,将来咱们可能会看到越来越多的加强事实应用程序应用SLAM。1、 书籍举荐-《3D点云剖析:传统、深度学习和可解释的机器学习办法》2、 书籍举荐-《基于Pose SLAM的建图、布局与摸索》3、 基于多传感器交融的定位和建图零碎4、  书籍举荐-《卡尔曼滤波与信息交融》5、 书籍举荐-《3D形态剖析:根底、实践和利用》6、 书籍举荐-《大规模SLAM技术》

March 22, 2023 · 1 min · jiezi

关于机器学习:DDPG强化学习的PyTorch代码实现和逐步讲解

深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)是受Deep Q-Network启发的无模型、非策略深度强化算法,是基于应用策略梯度的Actor-Critic,本文将应用pytorch对其进行残缺的实现和解说 DDPG的要害组成部分是 Replay BufferActor-Critic neural networkExploration NoiseTarget networkSoft Target Updates for Target Network上面咱们一个一个来逐渐实现: Replay BufferDDPG应用Replay Buffer存储通过摸索环境采样的过程和处分(S,a,R,S+)。Replay Buffer在帮忙代理减速学习以及DDPG的稳定性方面起着至关重要的作用: 最小化样本之间的相关性:将过来的教训存储在 Replay Buffer 中,从而容许代理从各种教训中学习。启用离线策略学习:容许代理从重播缓冲区采样转换,而不是从以后策略采样转换。高效采样:将过来的教训存储在缓冲区中,容许代理屡次从不同的教训中学习。 classReplay_buffer(): ''' Code based on: https://github.com/openai/baselines/blob/master/baselines/deepq/replay_buffer.py Expects tuples of (state, next_state, action, reward, done) ''' def__init__(self, max_size=capacity): """Create Replay buffer. Parameters ---------- size: int Max number of transitions to store in the buffer. When the buffer overflows the old memories are dropped. """ self.storage= [] self.max_size=max_size self.ptr=0 defpush(self, data): iflen(self.storage) ==self.max_size: self.storage[int(self.ptr)] =data self.ptr= (self.ptr+1) %self.max_size else: self.storage.append(data) defsample(self, batch_size): """Sample a batch of experiences. Parameters ---------- batch_size: int How many transitions to sample. Returns ------- state: np.array batch of state or observations action: np.array batch of actions executed given a state reward: np.array rewards received as results of executing action next_state: np.array next state next state or observations seen after executing action done: np.array done[i] = 1 if executing ation[i] resulted in the end of an episode and 0 otherwise. """ ind=np.random.randint(0, len(self.storage), size=batch_size) state, next_state, action, reward, done= [], [], [], [], [] foriinind: st, n_st, act, rew, dn=self.storage[i] state.append(np.array(st, copy=False)) next_state.append(np.array(n_st, copy=False)) action.append(np.array(act, copy=False)) reward.append(np.array(rew, copy=False)) done.append(np.array(dn, copy=False)) returnnp.array(state), np.array(next_state), np.array(action), np.array(reward).reshape(-1, 1), np.array(done).reshape(-1, 1)Actor-Critic Neural Network这是Actor-Critic 强化学习算法的 PyTorch 实现。该代码定义了两个神经网络模型,一个 Actor 和一个 Critic。 ...

March 22, 2023 · 6 min · jiezi

关于机器学习:机器学习算法一-基于逻辑回归的分类预测

机器学习算法(一): 基于逻辑回归的分类预测我的项目链接参考:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc 1 逻辑回归的介绍和利用1.1 逻辑回归的介绍逻辑回归(Logistic regression,简称LR)尽管其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。尽管当初深度学习绝对于这些传统办法更为炽热,但实则这些传统办法因为其独特的劣势仍然广泛应用于各个领域中。 而对于逻辑回归而且,最为突出的两点就是其模型简略和模型的可解释性强。 逻辑回归模型的优劣势: 长处:实现简略,易于了解和实现;计算代价不高,速度很快,存储资源低;毛病:容易欠拟合,分类精度可能不高1.1 逻辑回归的利用逻辑回归模型宽泛用于各个领域,包含机器学习,大多数医学畛域和社会科学。例如,最后由Boyd 等人开发的创伤和伤害重大度评分(TRISS)被宽泛用于预测受伤患者的死亡率,应用逻辑回归 基于察看到的患者特色(年龄,性别,体重指数,各种血液查看的后果等)剖析预测产生特定疾病(例如糖尿病,冠心病)的危险。逻辑回归模型也用于预测在给定的过程中,零碎或产品的故障的可能性。还用于市场营销应用程序,例如预测客户购买产品或停止订购的偏向等。在经济学中它能够用来预测一个人抉择进入劳动力市场的可能性,而商业利用则能够用来预测房主拖欠抵押贷款的可能性。条件随机字段是逻辑回归到程序数据的扩大,用于自然语言解决。 逻辑回归模型当初同样是很多分类算法的根底组件,比方 分类工作中基于GBDT算法+LR逻辑回归实现的信用卡交易反欺诈,CTR(点击通过率)预估等,其益处在于输入值天然地落在0到1之间,并且有概率意义。模型清晰,有对应的概率学实践根底。它拟合进去的参数就代表了每一个特色(feature)对后果的影响。也是一个了解数据的好工具。但同时因为其本质上是一个线性的分类器,所以不能应答较为简单的数据状况。很多时候咱们也会拿逻辑回归模型去做一些工作尝试的基线(根底程度)。 说了这些逻辑回归的概念和利用,大家应该曾经对其有所期待了吧,那么咱们当初开始吧!!! 2 学习指标理解 逻辑回归 的实践把握 逻辑回归 的 sklearn 函数调用应用并将其使用到鸢尾花数据集预测3 代码流程Part1 Demo实际Step1:库函数导入Step2:模型训练Step3:模型参数查看Step4:数据和模型可视化Step5:模型预测Part2 基于鸢尾花(iris)数据集的逻辑回归分类实际Step1:库函数导入Step2:数据读取/载入Step3:数据信息简略查看Step4:可视化形容Step5:利用 逻辑回归模型 在二分类上 进行训练和预测Step5:利用 逻辑回归模型 在三分类(多分类)上 进行训练和预测4 算法实战### 4.1 Demo实际 Step1:库函数导入 ## 根底函数库import numpy as np ## 导入画图库import matplotlib.pyplot as pltimport seaborn as sns## 导入逻辑回归模型函数from sklearn.linear_model import LogisticRegressionStep2:模型训练 ##Demo演示LogisticRegression分类## 结构数据集x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])y_label = np.array([0, 0, 0, 1, 1, 1])## 调用逻辑回归模型lr_clf = LogisticRegression()## 用逻辑回归模型拟合结构的数据集lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2Step3:模型参数查看 ...

March 22, 2023 · 4 min · jiezi

关于机器学习:机器学习模型的性能评估方法

动动发财的小手,点个赞吧! 部署模型后,监控其性能对于确保 ML 零碎的品质起着至关重要的作用。要计算准确度、精确度、召回率或 f1 分数等指标,须要标签。然而,在许多状况下,标签可能不可用、局部可用或提早提供。在这些状况下,预计模型性能的能力会很有帮忙。 在这篇文章中,将探讨在没有实在数据的状况下预计性能的可能办法。 1. NannyMLNannyML 是一个 Python 包,用于检测静默模型故障、预计没有标记数据的部署后性能以及检测数据漂移。目前,NannyML 有两种性能预计办法:Confidence-based Performance Estimation (CBPE) 和 Direct Loss Estimation (DLE)。 2. 基于置信度的性能预计顾名思义,此办法利用模型预测的置信度分数来执行性能预计。 注意事项: 置信度作为概率:置信度分数应该代表概率——例如如果大量察看的分数为 0.9,则大概 90% 的工夫都是正确的。良好校准的概率:另一个要求是分数应该通过良好校准,但状况可能并非总是如此。好消息是,如果须要,NannyML 会在外部执行校准。没有协变量转移到空间中以前看不见的区域:例如,如果您的模型是针对 10-70 岁的人进行训练的,并且在生产中,您的察看对象是 70 岁以上的人,则这种办法可能无奈提供牢靠的预计没有概念漂移:如果模型的输出和指标之间的关系发生变化,这种办法可能无奈提供牢靠的预计(我集体不晓得有什么办法能够)不适宜回归模型:回归模型通常不会固有地输入置信度分数,只会输入理论的预测,这使得这种办法的应用对于这种状况来说并非易事。3. 间接损失估算这种办法背地的直觉是训练一个额定的 ML 模型,其工作是预计监控模型的损失。额定的模型称为 Nanny 模型,而受监控的模型是 Child 模型。 注意事项: 额定模型:须要训练额定的模型来预计原始模型的损失,这会减少零碎的复杂性。然而,模型不用比原始模型好,在许多状况下,它能够是一个简略的过程。适宜回归:这种办法非常适合回归工作。例如,能够训练保姆模型来预测 MSE(均方误差)或 MAE(均匀绝对误差)。没有协变量转移到空间中以前看不见的区域:对 CBPE 所做的雷同思考也实用于此办法无概念漂移:对 CBPE 所做的雷同思考也实用于此办法具备不同性能的区域:受监控模型在不同区域应具备不同的性能。例如,如果您的模型依据一天中不同节令的不同时段体现得更好或更差。本文由mdnice多平台公布

March 20, 2023 · 1 min · jiezi

关于机器学习:达观数据陈运文探索大语言模型对症下药很关键

内容起源:ChatGPT及大模型专题研讨会 分享嘉宾:达观数据董事长兼CEO 陈运文博士分享主题:《摸索大语言模型垂直化训练技术和利用》 转载自CSDN稿件本文 整顿自 3月11日 《ChatGPT 及大规模专题研讨会》上,达观数据董事长兼CEO 陈运文博士对于《摸索大语言模型垂直化训练技术和利用》的分享,将介绍达观数据在大语言模型利用中的摸索与思考。 此次分享的次要内容分为 6 块,别离是: 参数规模和数据规模的摸索垂直畛域适应预训练微调技术摸索提醒工程和垂直优化模型训练减速思路模型性能的垂直效力加强在摸索大语言模型利用过程中,将团队的思考列为了四点: 整体来看,只管模型的参数规模越大越好,但可摸索性价比更高的参数规模计划训练数据只管越多越好,但针对垂直场景可摸索更高效和有针对性的数据提炼办法为强化垂直方向的成果,可在模型预训练和微调技术上摸索一些好的思路为更贴合垂直场景的产品利用,摸索模型的性能加强、以及 prompt 等方向的产品翻新 陈运文,达观数据董事长兼CEO,复旦大学博士,计算机技术专家,国内计算机学会(ACM)和电子电器工程师学会(IEEE)会员 参数规模和数据规模的摸索一、缩放法令 (Scaling Laws) 家喻户晓,大模型的算力十分惊人。在 2020 年,从 OpenAI 在语言模型方面的钻研能够看到,语言模型的成果与参数量、数据量、计算量根本呈平滑的幂定律——缩放法令 (Scaling Laws) 。随着模型的参数量(Parameters)、参加训练的数据量(Tokens)以及训练过程累积的计算量(FLOPS)的指数性增大, 模型在测试集上的 Loss 就线性升高,也就意味着模型的成果越好。 Kaplan J, McCandlish S, Henighan T, et al. Scaling laws for neural language models[J]. arXiv preprint arXiv:2001.08361, 2020. 如下图所示,在运算量的减少过程中,参数规模的减少能够起到更要害的作用。在给定的计算量且参数规模较小时, 增大模型参数量对于模型成果的奉献,远优于减少数据量和训练步数。这也作为后续推出的 GPT-3(175B) 和其余千亿级别模型奠定了实践根底。 Kaplan J, McCandlish S, Henighan T, et al. Scaling laws for neural language models[J]. arXiv preprint arXiv:2001.08361, 2020. 二、Compute-Optimal  在 2022 年,DeepMind 在 ScalingLaw 里又做了进一步剖析。钻研通过定量的试验验证,语言模型训练数据大小,应该和模型参数量大小等比放大。能够看到,在计算总量不变的状况下,模型训练的成果在参数量和训练数据量当中有个最优平衡点,曲线上面的最低点是在参数规模和训练数据量当中有个十分好的折中点。 ...

March 20, 2023 · 5 min · jiezi

关于机器学习:大语言模型LLMs和新兴机器学习技术栈

编者按:过来,NLP开发人员依赖于文本分类、命名实体辨认和命名实体消歧等技术栈来优化NLP工作。然而,随着大语言模型(LLM)的疾速倒退,新的技术栈开始呈现,以反对和减速这些大型语言模型的实现和利用。 让咱们一起追随Langchain的开发者,独特探讨LLM及NLP技术栈正在产生的变动,以及这一系列变动对开发者的意义。 以下是译文,Enjoy! 作者 |  Harrison Chase & Brian Raymond 编译 | 岳扬 01 现有的NLP技术栈直到最近,NLP开发人员都始终依赖于传统优化NLP工作的技术栈,如文本分类(text classification)、命名实体辨认(Named Entity Recognition)、命名实体消歧(Named Entity Disambiguation)。这种技术栈通常由数据预处理管道(data preprocessing pipeline)、机器学习管道(machine learning pipeline)和各种存储嵌入和结构化数据的数据库组成。 这种架构在生成大量的三元组(triples)、词嵌入(word embeddings)、句子嵌入(sentence embeddings)、Seq2Seq模型的输入(sequence-to-sequence outputs)、语言模型概率值(language model probabilities)、注意力机制的权重(attention weights)等方面运作良好。开发人员通常会将这些结构化输入数据存储在ElasticSearch、Postgres或Neo4j数据库中,他们会将这些数据作为用户(或服务)能够查问的常识图谱来应用。 图1. 现有的NLP技术栈 02 新兴的大语言模型(LLM)技术栈自2022年秋季以来,一个旨在充沛开掘LLM后劲的新技术栈开始呈现。与之前的技术栈相比,该技术栈着重于实现文本生成——与晚期的机器学习模型相比,古代LLM最善于这项工作。 这个新的技术栈由四个次要局部组成:数据预处理管道(data preprocessing pipeline)、嵌入终端(embeddings endpoint )+向量存储(vector store)、LLM终端(LLM endpoints)和LLM编程框架(LLM programming framework) 。 旧的技术栈和新的技术栈之间有几个很大的不同之处: 首先,新的技术栈不那么依赖存储结构化数据的常识图谱(如三元组),因为诸如ChatGPT、Claude和Flan T-5等LLM比晚期的GPT 2等模型编码了更多的信息。第二,较新的技术栈应用现成的LLM终端(LLM endpoint)作为模型,而不是定制的ML管道(ML pipeline)(至多在刚开始时)。 这意味着明天的开发人员破费更少的工夫来训练专门的信息提取模型(例如命名实体辨认、关系提取和情感剖析),并且能够在比拟少的工夫(和老本)内启动解决方案。 图2. 新兴的大模型技术栈 2.1 数据预处理管道新技术栈的第一个次要局部(数据预处理管道)与旧的技术栈没有太大变动。这一步包含用于摄取数据的连接器(例如S3 bucket和CRM),数据变换层(data transformation layer)和上游连接器(如到向量数据库)。通常状况下,输出到LLM中最有价值的信息个别是最难解决的(PDF、PPTX、HTML等),但也有一些容易解决的文件(例如.DOCX)蕴含用户不心愿发送到推理终端的信息(如广告、法律模板等)。 从历史上看,这一步骤个别是由数据科学家为每个应用程序手工构建的。依据所波及的数据类型,他们可能应用现成的OCR模型和几十到几百个自定义的正则表达式来转换和清理自然语言数据(natural language data),以便在上游机器学习管道(machine learning pipeline)中进行解决。对于非结构化数据,咱们正在开发一款开源工具来减速这一预处理步骤,利用一系列计算机视觉文档宰割模型(computer vision document segmentation models),以及NLP模型、Python脚本和正则表达式来主动提取、清理和转换要害文档元素(例如题目、注释、页眉/页脚、列表等)。 咱们(Langchain)目前正在开发一款跨时代的工具,以使开发人员可能轻松地将蕴含自然语言数据的大型和高度异构的语料库(例如,蕴含成千上万的PDF、PPTX、聊天记录、抓取的HTML等的S3 bucket)指向单个API终端,并接管洁净的JSON,为嵌入终端和存储在矢量数据库中做好筹备。 2.2 嵌入终端和向量存储嵌入终端(embeddings endpoint)和向量存储(vector store) 的应用代表了数据存储和拜访形式的重大演变。以前的嵌入次要用于文档聚类等专有工作(niche task)。将文档及其嵌入存储在向量数据库中,使LLM终端的critical engagement patterns得以实现(下文将具体介绍)。这种架构的次要劣势之一是可能间接存储原始嵌入,而不是将它们转换为结构化格局。 这意味着数据能够以其天然格局存储,从而实现更快的解决工夫和更高效的数据检索。此外,这种办法能够更轻松地解决大型数据集,因为它能够缩小在训练和推理过程中须要解决的数据量。 ...

March 20, 2023 · 1 min · jiezi

关于机器学习:Pandas-20-简单介绍和速度评测

Pandas是机器学习中最罕用的一个库了,咱们基本上每天都会应用它。而pandas应用了一个“NumPy”作为后端,这个咱们也都是晓得的,然而最近 Pandas 2.0 的RC版曾经最近公布了。这个版本次要包含bug修复、性能改良和减少Apache Arrow后端。当波及到应用DF时,Arrow比Numpy提供了更多的劣势。 PyArrow能够无效地解决内存中的数据结构。它能够提供一种标准化的形式来示意简单的数据结构,特地是在大数据环境中的数据结构,并且使不同应用程序和零碎之间的数据交换更容易。 在本文中,咱们将做一个简略的介绍和评测,为什么pandas抉择Arrow作为后端,以及如何在pandas 2.0中开始应用Arrow(它尽管不是默认选项)。 Pandas < 2.0和Pandas 2.0有什么不同呢?Pandas 2.0,不仅反对NumPy作为后端,还反对PyArrow。 倡议新开启一个新虚拟环境作为测试,首先装置 pip install pandas==2.0.0rc0 pip install pyarrow而后能够查看版本: import pandas as pd print(pd.__version__)Arrow后端因为不是默认,所以咱们在应用Arrow时,还要显式的指定: >>> pd.Series([5, 6, 7, 8], dtype='int64[pyarrow]') 0 5 1 6 2 7 3 8 dtype: int64[pyarrow]能够看到,当初dtype参数曾经是Arrow了。数据类型也变为了int64[pyarrow],而不是咱们在应用Numpy时的int64。 咱们还能够默认设置Arrow import pandas as pd pd.options.mode.dtype_backend = 'pyarrow'这是RC版本,在将来中还很有可能发生变化,比方想应用PyArrow读取CSV,则必须应用上面的代码。 import pandas as pd pd.options.mode.dtype_backend = 'pyarrow' pd.read_csv("file_name.csv", engine='pyarrow', use_nullable_dtypes=True)速度比照依据官网的介绍咱们都晓得,应用Arrow次要就是进步了速度,那么咱们来做一个简略的测试: 应用NumPy和PyArrow的读取雷同的CSV文件,比拟两者的差别。 %%time # Pandas + Numpy df_with_numpy = pd.read_csv("randomDF.csv", sep=";") %%time # Pandas + PyArrow df_with_pyarrow = pd.read_csv("randomDF.csv", sep=";", engine='pyarrow', use_nullable_dtypes=True) 通过执行这几行代码,咱们将看到PyArrow只须要NumPy大概10%的工夫! ...

March 20, 2023 · 1 min · jiezi

关于机器学习:深度解析机器视觉四大光学成像方法

原文:深度解析机器视觉四大光学成像办法 工业4.0时代,三维机器视觉备受关注,目前,三维机器视觉成像办法次要分为光学成像法和非光学成像法,这之中,光学成像法是市场支流。 01  航行工夫3D成像航行工夫成像(Time of Flight),简称TOF,是通过给指标间断发送光脉冲,而后用传感器接管从物体返回的光,通过探测光脉冲的航行(往返)工夫来失去指标物间隔。光发射进来后,会被物体反射回来,并且被相机检测到。目前市面上的 ToF 产品按技术路线能够分为两大类:1、 DToF(间接测量航行工夫,direct-ToF);2、 IToF(间接测量航行工夫,indirect-ToF)。DTOF测量发射脉冲与接管脉冲的工夫距离。其外围组件次要有VCSEL、单光子雪崩光电二极管SPAD,以及工夫数字转换器(TDC)。DTOF会在单帧测量工夫内发射和接管N次光信号,而后对记录的N次航行工夫做直方图统计,其中呈现频率最高的航行工夫tof用于计算指标间隔。ITOF大部分间接测量计划都是采纳了一种测相位偏移的办法,即发射正弦波/方波与接管正弦波/方波之间相位差。从利用角度来说,DToF功耗低,体积小适宜于在较小的设施应用,并且因为抗扰性较好,在户外的应用上也更胜一筹。并且因为DToF的原理,测量间隔增大时精度不会大幅衰减,能耗也不会大幅晋升。而IToF的图像分辨率较高,在物体辨认,3D重建以及行为剖析等利用场景中可能重现场景中更多的细节信息。总体而言,TOF成像可用于大视野、远距离、低精度、低成本的3D图像采集,其特点是:检测速度快、视线范畴较大、工作距离远、价格便宜,但精度低,易受环境光的烦扰。例如Camcueb3.0具备牢靠的深度精度(<3mm @ 4m),每个像素对应一个3D数据。 02  扫描3D成像三维扫描的根本定义是通过肯定办法获取被扫描物体的几何结构和外表图像。扫描3D成像办法可分为扫描测距、被动三角法、色散共焦法。扫描测距是利用一条准直光束通过1D测距扫描整个指标外表实现3D测量的;被动三角法是基于三角测量原理,利用准直光束、一条或多条立体光束扫描指标外表实现3D成像,如图2所示。色散共焦通过剖析反射光束的光谱,取得对应光谱光的汇集地位, 如图3所示。图2图3三维扫描成像的最大长处是测量精度高。但毛病是速度慢、效率低;用于机械手臂末端时,可实现高精度3D测量,但不适宜机械手臂实时3D疏导与定位,因而利用场合无限。三维扫描利用的畛域有:(1)逆向工程。通过三维扫描获取物品三维信息,而后输出到软件中进行批改,欠缺,最初失去准确的三维模型。(2)产品检测。三维扫描被利用于生产线上,检测产品的形态,管制产品的品质。(3)生物医疗畛域。例如牙齿改正,器官复制等。(4)考古畛域。例如文物复制。 03  构造光投影3D成像构造光技术就是应用提前设计好的具备非凡构造的图案(比方离散光斑、条纹光、编码构造光等),而后将图案投影到三维空间物体外表上,应用另外一个相机察看在三维物理外表成像的畸变状况。如果构造光图案投影在该物体外表是一个立体,那么察看到的成像中构造光的图案就和投影的图案相似,没有变形,只是依据间隔远近产生肯定的尺度变动。然而,如果物体外表不是立体,那么察看到的构造光图案就会因为物体外表不同的几何形态而产生不同的扭曲变形,而且依据间隔的不同而不同,依据已知的构造光图案及察看到的变形,就能依据算法计算被测物的三维形态及深度信息。构造光投影三维成像目前是机器人3D视觉感知的次要形式。其成像零碎是由若干个投影仪和相机组成,罕用的构造模式有:单投影仪-单相机、单投影仪-双相机、单投影仪-多相机、单相机-双投影仪和单相机-多投影仪等。依据构造光投影次数划分,构造光投影三维成像能够分成单次投影3D和屡次投影3D办法。单次投影3D次要采纳空间复用编码和频率复用编码模式实现。因为单次投影曝光和成像工夫短,抗振动性能好,适宜静止物体的3D成像,如机器人实时静止疏导,手眼机器人对生产线上间断静止产品进行抓取等操作。然而深度垂直方向上的空间分辨率受到指标视场、镜头倍率和相机像素等因素的影响,大视场状况下不容易晋升。屡次投影3D具备较高空间分辨率,能无效地解决外表斜率阶跃变动和空洞等问题。不足之处在于:精度容易受到投影仪、相机的非线性和环境变动的影响且抗振动性能差,不适合测量间断静止的物体;对于毛糙外表,构造光能够间接投射到物体外表进行视觉成像;但对于大反射率润滑外表和镜面物体3D成像,构造光投影不能间接投射到被成像外表,须要借助镜面偏折法。偏折法对于简单面型的测量,通常须要借助屡次投影办法,因而具备屡次投影办法雷同的毛病。另外偏折法对曲率变动大的外表测量有肯定的难度,因为条纹偏折后反射角的变化率是被测外表曲率变化率的2倍,因而对被测物体外表的曲率变动比拟敏感,很容易产生遮挡难题。 04  平面视觉3D成像平面视觉字面意思是用一只眼睛或两只眼睛感知三维构造,个别状况下是指从不同的视点获取两幅或多幅图像重构指标物体3D构造或深度信息。目前平面视觉3D成像办法能够分为单目视觉、双目视觉、多(目)视觉和光场3D成像等。单目视觉深度感知线索通常有:透视、焦距差别、多视觉成像、笼罩、暗影、运动视差等。在机器人视觉里还能够用镜像1,以及其余 shape from X10等办法实现。双目视觉深度感知视觉线索有:眼睛的收敛地位和双目视差。在机器视觉里利用两个相机从两个视点对同一个指标场景获取两个视点图像再计算两个视点图像中同名点的视差取得指标场景的3D深度信息。典型的双目平面视觉计算过程蕴含上面四个步骤:图像畸变改正、平面图像校对、图像配准和三角法重投影视差图计算,如下图。图5 双目平面视觉零碎与计算过程示意图多(目)视觉成像也称多视点平面成像,用单个或多个相机从多个视点获取同一个指标场景的多幅图像,重构指标场景的三维信息。其基本原理如下图所示。图6 多视点成像基本原理多视点平面成像次要用于下列几种场景:应用多个相机从不同视点,获取同一个指标场景多幅图像,而后基于特色的平面重构等算法求取场景深度和空间结构信息;从静止复原形态(SM)的技术。应用同一相机在其内参数不变的条件下,从不同视点获取多幅图像,重构指标场景的三维信息。该技术罕用于跟踪目标场景中大量的控制点,间断复原场景的3D构造信息、相机的姿势和地位。 1、 LOCUS:以LiDAR为核心的多传感器高精度里程计与三维建图零碎2、 书籍举荐-《基于多视图几何的机器人零碎视觉感知与管制》3、 开源三维重建算法colmap特征提取代码解析4、 书籍举荐-《3D计算机视觉》5、 点云压缩研究进展与趋势6、多视图点云配准算法综述

March 17, 2023 · 1 min · jiezi

关于机器学习:GPT4-和ChatGPT-API的定价分析

OpenAI公布了他们的ChatGPT新机器学习模型GPT-4。GPT-4是GPT-3的一大提高,GPT-3是以后ChatGPT收费版本(GPT 3.5 Turbo)所运行的模型的根底,明天咱们也来凑个热点,钻研一下它们的定价 GPT-4新的性能GPT-4能够在对话中应用图像,并能够答复无关图像的问题。前还没有官网确认除了用户输出之外,聊天机器人是否能够输入图像。 应用GPT-4能够抓取网站链接:发送一个链接,他就能够主动抓取内容,并不需要复制粘贴来发送网站的内容。 GPT-3每个申请的字数限度在3000字左右。GPT-4将这一限度大幅提高到2.5万字。这样,语言模型将可能在更好的上下文环境下进行更长的对话,这将进步它在特定上下文中答复的准确性和精确性。 测试指标明显提高:GPT-4训练的数据量比GPT-3大得多,所以GPT-4有更多的常识是有情理的,所以他在各种测试中失去更好的指标也是天经地义。 以上这些就是一些GPT-4新的性能,这个大家应该都看过好几遍了,上面咱们来进行另外一个视角的比照 GPT-4 API定价剖析GPT-4 API的模型被命名为GPT-4 - 0314。要通过GPT-4 API拜访这个模型,定价是: $0.03 / 1k提醒申请令牌 $0.06 / 1k实现响应令牌 这里的1k令牌相当于750个单词。 与GPT-3.5相比,GPT-4 API将令牌的最大上下文长度减少了一倍,从4,096减少到8,192。而GPT-4 API的默认速率限度是: 每分钟40k个令牌,每分钟200个申请 除了API以外(须要申请)还能够通过ChatGPT Plus拜访GPT-4,这个是每月20美元,依据限度来说,目前每4小时最多能够发送100条音讯。 相比之下,只需20美元,就能够应用GPT-4 API解决大概444k令牌(大概333k个单词)。 那么,如果思考GPT-4 API和ChatGPT API之间的比拟: 用于提醒申请的GPT-4比ChatGPT API贵14倍;而用于实现的GPT-4比ChatGPT API贵29倍。 那么咱们就要钻研一下这14x-29x之间的GPT-4 API比ChatGPT API更有价值吗? 咱们次要思考因素还是用例。如果用例与法律事务或通识教育/辅导相干,那么GPT-4相对值得一试。因为它在这两方面的晋升是非常明显的 而其余的用例还须要更深刻测试,这样咱们能力判断GPT-4 API是否带来实质性的益处。 另外就是OpenAI为提醒和补全提供了对其32,768个上下文的无限拜访,这样能够反对发送/接管比gpt-4-0314多4倍的文本。 也就是说最大上下文长度32,768(约50页文本)版本的GPT-4 API,破费将是8,092最大上下文长度版本的2倍: 申请令牌0.06 / 1k美元,响应令牌$0.12 / 1k美元 这个定价能够说是十分贵了。 总结在ChatGPT API和GPT-4 API之间的抉择取决于对我的项目的特定需要。所以当你进行抉择的时候应该确定: 预期的利用所需的精度波及的财务问题对将来倒退的适应性前几天的新闻,ChatGPT API的价格比text-davinci-003低10倍(成本低90%),所以ChatGPT API低成本较低兴许能够让咱们以更低的老本测试大语言模型的成果,随着开发者取得更低的价格,咱们能够期待大量新的、令人兴奋的产品,这些产品将融入商品化的人工智能。至于GPT-4,咱们还是持续期待它在理论利用中的后果吧。 https://avoid.overfit.cn/post/3c8e02ba3e2c48f084b9b1115d4ab2d4 作者:Ivan Campos

March 17, 2023 · 1 min · jiezi

关于机器学习:全球400多支团队参加鹅厂是如何拿下冠军的

来自中国、美国、新加坡、日本、印度等国家的400多支顶级团队加入了往年 WSDM Cup大赛,腾讯拿下两大子赛道冠军。 ACM 国内 WSDM(Web Search and Data Mining) 会议是信息检索畛域顶级会议之一。往年,第16 届 ACM 国内 WSDM 会议的论文的接管率为17.8%。WSDM Cup由 WSDM 会议举办,本次大赛共设置三个赛道:无偏排序学习和互联网搜寻预训练模型赛道、跨语言间断体的多语言信息检索赛道和视觉问答挑战赛道。 在腾讯太极机器学习平台和混元AI大模型助力下,腾讯机器学习搜寻团队(参赛队名:腾讯机平搜寻团队(TMLPS))加入了无偏排序学习和互联网搜寻预训练模型赛道,并在该赛道的两项子工作中(“Pre-training for Web Search”和“Unbiased Learning to Rank”)双双夺冠。与此同时,相干技术也广泛应用于微信搜一搜、腾讯广告等多个产品,获得了显著的业务收益。 咱们是如何做到的? 工作介绍1.1 数据集简介大型会话搜寻数据集[1]数据是主办方提供的搜寻会话(Session)数据, 波及到约3.8亿query及12亿的document。全数据通过脱敏解决,内容不具备可读性。Session数据中蕴含:1)记录了页面体现特色(文档媒体类型、文档展示高度和题目与摘要等)的候选文档列表 (通常少于10个);2)以后Session 下的用户行为特色(点击、停留时长和滑屏次数等)。 具体该数据集所记录的所有特色展示如下图所示: 图左: Session数据中的页面文档体现特色。从 D1 到 D8 共有 8 个体现特色。 图右: Session数据中用户行为特色。从 U1 到 U18 共有 18 种用户行为。 下图从不同的角度展现对该数据集的剖析。Session数据的数据分析 专家标注数据集专家标注数据集从Session数据随机抽取,每个文档与query的相关性由标注人员判断标注。每个文档依据相关性的强弱被标注为 5 个等级。表1-1 展现了每个等级文档的比例散布。表1-1 不同等级文档的数量以及所占比例 在本次较量中,该数据集一共被分为了三份。一份用于验证集,一份用于较量第一阶段测试集,最初一份用于较量第二阶段的测试集。 1.2 工作形容Pre-training for Web Search预训练技术在深度学习中失去了宽泛的使用。目前支流的预训练形式次要基于自然语言解决,学习给定语料中的语言建模能力,例如masking token prediction工作与next sentence prediction工作。然而这样的预训练并非与搜寻排序相干,在预训练任务中引入搜寻排序相干的工作使得模型更加贴近于上游工作成了搜寻预训练钻研中重要的课题。此工作中,参赛者须要在给定中大型搜寻日志中进行搜寻排序相干的预训练,并联合专家标注数据进行模型微调,产出一个无效地搜寻排序模型。 Unbiased Learning to Rank点击日志能提供大量的查问-文档相关性反馈,然而用户的点击信号通常存在很多乐音(bias),次要来源于诸如地位、展示模式、网页权威度、点击必要性等因素的影响。为了打消点击数据中潜在的乐音,无偏排序学习(Unbiased Learning to Rank,ULTR) 失去了宽泛的钻研。在此工作中,参赛者仅可利用大型搜寻日志(不能应用专家标注数据),通过文章内容、展示特色、用户交互行为特色等因素进行无偏排序学习训练。 ...

March 16, 2023 · 2 min · jiezi

关于机器学习:复旦邱锡鹏深度剖析-ChatGPT-类大语言模型的关键技术

内容起源:ChatGPT 及大模型专题研讨会分享嘉宾:复旦大传授 邱锡鹏分享主题:《对话式大型语言模型》转载自CSDN稿件 ChapGPT 自问世以来,便展现出了令世人惊艳的对话能力。仅用两个月工夫,ChatGPT 月沉闷用户就达一亿,是史上用户增速最快的生产利用。对于学术界、工业界、或是其余相干利用来说都是一个十分大的机会和挑战。 事实上,ChatGPT 的胜利并不是偶尔后果,其背地多有翻新之处。本文整顿于达观数据参加承办的「ChatGPT 及大模型专题研讨会」上,复旦大学邱锡鹏传授带来的《对话式大型语言模型》主题分享,他从大规模预训练语言模型带来的变动、ChatGPT 的关键技术及其局限性等角度深刻地介绍了大规模语言模型的相干常识。 邱锡鹏,复旦大学计算机学院传授,MOSS 零碎负责人 为什么是大语言模型?随着算力的一直晋升,语言模型曾经从最后基于概率预测的模型倒退到基于 Transformer 架构的预训练语言模型,并逐渐走向大模型的时代。为什么要突出大语言模型或是在后面加个“Large”?更重要的是它的涌现能力。 当模型规模较小时,模型的性能和参数大抵合乎比例定律,即模型的性能晋升和参数增长根本呈线性关系。然而,当 GPT-3/ChatGPT 这种千亿级别的大规模模型被提出后,人们发现其能够突破比例定律,实现模型能力质的飞跃。这些能力也被称为大模型的“涌现能力”(如了解人类指令等)。 上图是多个 NLP 工作随着模型规模扩充的性能变动曲线,能够看到,后期性能和模型规模大抵呈线性关系,当模型规模大到肯定水平时,工作性能有了显著的渐变。 因而,通常以百亿/千亿级参数量作为 LLM 钻研的分水岭。除此之外,大规模语言模型基座的可扩展性很强,其可能很容易和内部世界买通,源源不断地承受内部世界的常识更新,进而实现重复自我迭代。因而,大规模语言模型也被看作是实现通用人工智能的心愿。 ChatGPT的三个关键技术目前,很多公司和组织都在跟风 ChatGPT,推出相似的聊天机器人产品。这次要是因为 ChatGPT 的胜利,给人们带来了信念,证实了聊天机器人技术的可行性和后劲,让人们看到了聊天机器人在将来的微小市场和利用前景。 ChatGPT 的三个关键技术为:情景学习、思维链、天然指令学习,接下来将具体介绍一下这三个技术。 情景学习(In-context learning)扭转了之前须要把大模型用到上游工作的范式。对于一些 LLM 没有见过的新工作,只须要设计一些工作的语言形容,并给出几个工作实例,作为模型的输出,即可让模型从给定的情景中学习新工作并给出称心的答复后果。这种训练形式可能无效晋升模型小样本学习的能力。情景学习的示例图 能够看到,只须要以自然语言的模式形容两个情感分类工作输入输出的例子,LLM 就可能对新输出数据的情感极性进行判断。例如,做一个电影的评论,给出相应的任务模型,即可输入侧面的答复。 思维链(Chain-of-Thought,CoT)对于一些逻辑较为简单的问题,间接向大规模语言模型发问可能会失去不精确的答复,然而如果以提醒的形式在输出中给出有逻辑的解题步骤的示例后再提出问题,大模型就能给出正确题解。也就是说将简单问题拆解为多个子问题解决再从中抽取答案,就能够失去正确的答案。 思维链示意图 如思维链示意图所示,右边是间接让模型进行数学题的计算会失去谬误的后果,而右侧在解题过程退出了一个示例,引入解题过程则能够激发模型的推理能力,从而失去的正确的后果。 这就是一个简略的能够通过计算能力从思维链中拆散,有助于大模型实现工作,从而加重神经网络的累赘。 因为 CoT 技术可能激发大规模语言模型对简单问题的求解能力,该技术也被认为是突破比例定律的要害。 天然指令学习(Learning from Natural Instructions)晚期钻研人员心愿把所有的自然语言解决工作都可能指令化,对每个工作标注数据。这种训练形式就是会在后面增加一个“指令”,该指令可能以自然语言的模式形容工作内容,从而使得大模型依据输出来输入工作冀望的答案。该形式将上游工作进一步和自然语言模式对齐,能显著晋升模型对未知工作的泛化能力。 天然指令学习示意图 如天然指令学习示意图所示,右边是天然指令的测试场景,人们把 NLP 工作做到 1000 多种,目前最新模型能够做到 2000 多种 NLP 工作,接下来再对 NLP 工作进行分类,比方能力 A、能力 B,大模型指令能力、泛化能力十分强,学到四五十个工作时就能够泛化到上百种工作。但间隔真正的 ChatGPT 还有一步,那就是和实在的人类用意对齐,这就是 OpenAI 做的 GPT。 外围逻辑非常简单,一开始时让人写答案,然而老本太高,改成让人来选答案,这样对标注员的能力要求略微低一点,能够迅速晋升迭代和规模。基于打分再训练一个打分器,通过打分器主动评估模型的好坏,而后用强化学习开始迭代,这种办法能够大规模地把数据模型迭代给转起来,这是 OpenAI 做的 Instruct GPT 逻辑,强化学习的人类反馈。 ...

March 16, 2023 · 1 min · jiezi

关于机器学习:线上直播-聊聊今年的-TVM-Community-Keynote

内容一览:TVMCon 2023 终于来咯!往年的大会,咱们邀请到了特约嘉宾,线上为大家解读 Apache TVM 接下来的倒退布局~ 关键词:TVM 中文社区 TVMCon 2023 一年一度的 TVMCon 于北京工夫 3 月 16 日凌晨揭幕,为期 3 天,从 Tutorial、Keynote、最佳实际到闪电演讲,全方位涵盖本年度最值得关注的深度学习编译 & 优化的技术停顿及利用案例。 往年的大会依然抉择线上召开,为了进一步探讨 TVM 将来的倒退布局、为企业软硬件生态对接提供更具体的 insights,HyperAI超神经特邀请到了 Apache TVM PMC、上海交通大学博士冯思远,在线为大家解读 TVM Community Keynote,届时欢送大家线上加入、连线探讨~ ⏰ 流动工夫: 北京工夫 3 月 18 日 10:30-11:30(本周六) 参加形式:腾讯会议 点击链接入会:https://meeting.tencent.com/dm/R6ALPSQXQFbB 或输出会议号:182-282-759 本周六上午 10:30-11:30,退出线上探讨,把握 Apache TVM 的倒退方向,为机器学习编译的业务利用做出更理智的决策!相干链接: [1] TVM 中文文档: https://tvm.hyper.ai/ [2] TVMCon 2023 线上参会: https://www.tvmcon.org/

March 16, 2023 · 1 min · jiezi

关于机器学习:扩散模型的通用指导手册

出品人:Towhee 技术团队 张晨、顾梦佳 典型的扩散模型经过训练能够承受特定模式的条件领导(比方文本),但不能在没有从新训练的状况下容许其余模式为条件。 为此研究者提出一种通用的领导算法,使扩散模型无需从新训练任何指定用途的组件,就能由任意领导模式管制。 该算法胜利地生成了具备疏导性能的高质量图像,包含宰割、人脸识别、对象检测和分类器信号。 Universal guidance algorithm vs text-conditional model论文提出的疏导算法加强了扩散模型的图像采样办法,蕴含了来自现成辅助网络的疏导。试验发现,重建的洁净图像尽管不够天然和完满,但依然实用于通用领导函数,以提供具备信息的反馈并领导图像生成。 而后通过拓展分类器领导来激发前向的通用领导,该发现可能被用来解决通用领导。另外,反向通用领导的补充能够帮忙强制生成的图像,以满足基于领导函数的束缚。该算法最初应用了一种简略但有用的自复现技巧,依据教训进步生成图像的保真度。 相干材料:代码地址:https://github.com/arpitbansal297/Universal-Guided-Diffusion论文链接:Universal Guidance for Diffusion Models

March 16, 2023 · 1 min · jiezi

关于机器学习:联邦学习开源框架FATE架构

作者:京东科技 葛星宇1.前言本文除非凡阐明外,所指的都是fate 1.9版本。 fate材料存在着多处版本性能与公布的文档不匹配的状况,各个模块都有独立的文档,性能又有关联,坑比拟多,首先要理分明各概念、模块之间的关系。 2.网络互联架构 1. 概念解释: RollSite是一个grpc通信组件,是eggroll引擎中的一个模块,相当于咱们的grpc通信网关。 Exchange是RollSite中的一个性能,用于保护各方网关地址,并转发音讯。参考《FATE exchange部署指南》 2. 比照解读: l 网状架构相当于咱们的一体化版本模式,但没有dop平台来保护网关,每方须要在配置文件里保护其余参与方的网关地址。 l 星型架构的益处是只在Exchange方保护所有参与方的网关地址,前提是须要信赖Exchange,并且流量全副都须要从Exchange方直达,相当于咱们的中心化版本。但不反对证书。 3. Exchange配置 在Exchange上配置路由表: 在各party方配置默认路由指向exchange,不须要再配置每个party的地址。 3.总体架构FATE反对eggroll和spark两种计算引擎,搭配不同的通信组件,共五种组合,不同的通信模块不能兼容。 计划名计算引擎存储通信是否反对exchangetask调度特点EggRollnodemanagernodemanagerrollsite是clustermanager原生、最成熟Spark_RabbitMQsparkhdfsnginx+ rabbit否yarn?简略易上手的MQSpark_Pulsarsparkhdfsnginx+ pulsar是yarn?比RabbitMQ,能够反对更大规模的集群化部署Slim FATEspark_locallocalFSnginx+ pulsar是spark?最小资源。可用rabbit代替pulsar参考::《不同类型FATE的架构介绍》 区别: l RabbitMQ是一个简略易上手的MQ l Pulsar相比RabbitMQ,能够反对更大规模的集群化部署,也反对exchange模式的网络结构。 l Slim FATE相比其余模式,最大化缩小集群所需的组件,能够应用在小规模联邦学习计算,IOT设施等状况。 3.1.基于EggRoll引擎的架构 Eggroll是FATE原生反对的计算存储引擎,包含以下三个组件: l rollsite负责数据传输,以前的版本里叫 Proxy+Federation l nodemanager负责存储和计算 l clustermanager负责管理nodemanager 3.2.基于spark+hdfs+rabbitMQ的架构 3.3. 基于spark+hdfs+Pulsar的架构 3.4. spark_local (Slim FATE) 反对rabbitMQ替换pulsar 4. 组件源码所有的fate我的项目都在这个叫FederateAI社区的URL下:https://github.com/FederatedAI 主我的项目:FATE是一个汇总的文档和超链汇合, 学习入口,在线文档 关联我的项目: •KubeFATE docker和k8s的部署 •AnsibleFATE 相当于咱们的图形化部署版的底层脚本 学习入口 •FATE-Flow 联结学习工作流水线治理模块,注册、治理和调度核心。 •EggRoll 第一代fate的计算引擎 •FATE-Board 联结学习过程可视化模块,目前只能查看一些记录 ...

March 16, 2023 · 3 min · jiezi

关于机器学习:我用-Laf-三分钟写了一个专属-ChatGPT-Laf-创始人明天来上班

起因故事是这样的,一个月黑风高的夜晚,我掏出手机像平常一样关上朋友圈。 一开始我是不置信的,直到我(疾速的) --> 关上 laf --> 创立利用 --> 新建云函数 --> 写上三行代码 --> 点击运行,呦呵!还真通了。 而后我又(疾速的)--> 新建前端我的项目 --> 写点款式 --> 接入laf --> 写点逻辑 --> 打包我的项目 --> 上传到 laf 托管,取得一个线上的地址:https://jyf6wk-chat-gpt.site.laf.dev/ 轻易问两句试试看。 不得了不得了,连忙发给我的敌人们装个杯。 再棘手发到大型 同性交友群 技术交换群。 契机没多大会,一个 基友 米开朗基杨加我好友。 我一想博客也很久没更新了(次要是他叫了我一声大佬),就顺便写一篇吧,而后我(迅速又帅气的)取出我的 68键,拾光白轴,PBT豆奶键帽的键盘,行云流水的码完了一篇文章:三分钟领有本人的 ChatGPT (从开发到上线) 这篇文章通过 米开朗基杨 的润色之后几番转载, laf 一天减少了上百个 star,四百多利用,间接送上 Github Trending。 转折而后,而后重点来了。 就这样,我用一个 demo 和一篇文章,拿到了 laf 的 offer ,此时此刻我坐在 laf 办公室码字与你分享。 我置信你也能够像我一样,用 laf 做一点神奇的货色进去。 ...

March 16, 2023 · 1 min · jiezi

关于机器学习:深度学习推理时影响性能的一些细节总结

Q: torch.cat 速度太慢 A: torch.cat 速度太慢 Q: tensor.to 将数据 to cuda 太慢 A: tensor.to 将数据 to cuda 太慢? tensor.to 速度测试 Q:如何查看一个 pytorch 的 tensor 占用了多少字节 A:如何查看一个 pytorch 的 tensor 占用了多少字节

March 15, 2023 · 1 min · jiezi

关于机器学习:SDGADAMLookAheadLion等优化器的对比介绍

本文将介绍了最先进的深度学习优化办法,帮忙神经网络训练得更快,体现得更好。有很多个不同模式的优化器,这里咱们只找最根底、最罕用、最无效和最新的来介绍。 优化器首先,让咱们定义优化。当咱们训练咱们的模型以使其体现更好时,首先应用损失函数,训练时损失的缩小表明咱们的模型运行良好。而优化是用来形容这种缩小损失技术的术语。 “损失函数”是什么意思? 多个变量的值被映射成一个实数,该实数直观地示意应用损失函数与事件相干的一些“老本”。 理论值与模型预测值之间的差值被加起来被称作损失,而计算这种差值的函数被称作损失函数。 (y_actual — y_predicted)/n (from i=1 to n {n = Number of samples}) 这是一种掂量算法对它所应用的数据建模的好坏的办法。如果你的预测不精确,你的损失函数将产生更大的值。数字越低,阐明模型越好。 理论的Y值由下面例子中的绿色点示意,拟合的直线由蓝色线示意(由咱们的模型预测的值)。 让咱们开始介绍优化技术来加强咱们模型并尽可能减少后面提到的损失函数 梯度降落法 Gradient Descent术语“梯度”指的是当函数的输出产生轻微变动时,函数的输入会产生多大的变动。 应用微积分,梯度降落迭代调整参数值,以在定义初始参数值后最小化所提供的老本函数。这是依据反复直到收敛办法实现的。 1、通过计算函数的一阶导数(y = mX + c {m =斜率,c =截距)来确定函数的梯度或斜率 2、斜率将从以后地位晋升一个等于eta(学习率)倍的量到部分最小值,这是通过与梯度方向相同的方向挪动来进行的 学习率:梯度降落向部分最小值降落所采取的步骤的大小,较大的步长是由高学习率产生的,但也有超过最小值的危险。低学习率还表明步长较小,这升高了操作效率,但提供了更高的准确性,并且有时无奈逃出部分最小值,所以学习率是一个很重要的超参数。 随机梯度降落 通过一次加载n点的整个数据集来计算损失函数的导数,SGD办法不是在每次迭代中应用整个数据集,而是通过随机抉择大量样本来计算导数,从而升高了计算强度。 SGD的毛病是,一旦它靠近最小值,它就不会稳定下来,而是到处反弹,给咱们一个很好的模型性能值,但不是最好的值。这能够通过扭转模型参数来解决。 应用SGD是大型数据集的现实抉择。然而当数据集较小或中等时,最好利用GD来取得更优的解决方案 小批量的梯度降落 小批量梯度将大数据集划分为小批量,并别离更新每个批量,这样既解决了GD的计算耗费问题,也解决了SGD达到最小值的门路问题,这也就是咱们在训练时设置batch size参数的作用。 也就是说: 梯度降落(GD):在整个训练集之后,训练的参数会被批改随机梯度降落(SGD):在每一个样本训练之后更新参数小批量的梯度降落 (Mini Batch Gradient Descent): 每批实现后,更新参数带动量的梯度降落 Momentum Stochastic Gradient为了平滑更新,思考到以前的梯度。它不是更新权重,而是计算前几次迭代的梯度平均值。 比传统的梯度降落办法更快。动量通过用指数加权均匀去噪梯度来解决这个噪声问题,放慢了在正确方向上的收敛,减缓了在谬误方向上的稳定。这个动量超参数用符号“”示意。 权重由 = −(t)更新,动量项通常设置为0.9或相似的值,所有以前的更新,计算t时刻的动量,给予最近的更改比旧的更新更多的权重。这导致收敛减速并更快地达到最小值。 如果你应用pytorch,有一个momentum 参数,就是这个了。 Adaptive Gradient Descent (AdaGrad)AdaGrad打消了手动调整学习率的须要,在迭代过程中一直调整学习率,并让指标函数中的每个参数都别离领有本人的学习率。利用低学习率的参数链接到频繁产生的特色,并应用高学习率的参数链接到很少产生的特色。它适宜用于稠密数据。 每个权重以不同的速率()学习。 在每次迭代中,每个权重的不同学习率用alpha(t)示意, =常数,Epsilon =正整数(以防止除0误差) ...

March 15, 2023 · 1 min · jiezi

关于机器学习:保姆级教程猫狗识别不再难手把手教你用PaddlePaddle构建卷积神经网络

大家好,我是eriktse,最近在学习计算机视觉。对cv略微有点理解的小伙伴都晓得,猫狗辨认是一个入门的我的项目,虽说这是入门级我的项目,然而要本人写一个神经网络还是没那么简略的。 在这篇文章中,我将从数据处理、网络模型构建、模型训练、模型评估四步来带你亲自动手制作一个准确率达70%以上的能够实现猫狗辨认的卷积神经网络。 试验环境深度学习框架是百度的PaddlePaddle,机器用的是AI Studio平台。 进入AI Studio官网后点击顶部菜单中的我的项目进入我的项目界面,再点击创立我的项目,而后依照下图的设置创立一个环境。 抉择Notebook类型。 抉择BML Codelab版本。 留神在数据集的设置这里须要本人上传kaggle猫狗辨认的数据集,我当然曾经给大家上传好了,大家搜寻Kaggle猫狗辨认即可找到我的数据集。 aistudio平台是反对从百度网盘导入数据集的,这个十分nice!数据处理咱们的数据在上面这个文件夹外面,将train.zip和test.zip解压。 train外面的图片是cat.xxx.jpg, dog.xxx.jpg,数据处理的思路是,先用os模块获取所有图片的地址,打上标签,而后用PIL.Image加载成tensor,再Resize到一个固定的大小,而后进行归一化,再将多个img和lbl形成一个batch。 结构适合的batch能够减速训练过程。batch相当于是将很多个输出同时输进去,而后一次跑出后果,相比于一张一张图片解决要快很多。通过os.listdir()能够失去某个地址的所有子文件和子文件夹并返回一个可迭代对象。 通过os.path.join(path1, path2)合并两个path。 编写一个loadImagetoTensor()函数便于咱们解决图像。 这部分须要读者有肯定的图片解决根底,比方Image模块的用法,numpy模块的用法。 咱们这里的图片维度规范为[3. 150, 150]示意有3个通道,每个通道尺寸为[150, 150]。import paddle, osfrom PIL import Imagefrom paddle.vision.transforms import Resizeimport numpy as npprint(paddle.get_device())paddle.set_device('gpu:0')data_dir = "/home/aistudio/data/data195536/train"train_data = []test_data = []siz = 150 # 规定图片大小为(size, size)batch_size = 16data_paths = os.listdir(data_dir)def loadImagetoTensor(path: str): #将某个地址的图片读入并进行Transform解决,返回一个tensor img = np.array(Image.open(path), dtype='float32') # 读取图片并转换成灰度,这样就只有一个通道了 img = Resize(size=(siz, siz))(img) # 将图片缩放到(siz, siz) img /= 255.0 return paddle.to_tensor(img) # 返回一个(siz, siz)的tensor# 规定0为狗,1为猫train_data = [] # 存一个元组(图像tensor, 标签int)test_data = []# 为了放慢试验进度,咱们取其中训练集中的前5000张cnt = 0for path in data_paths: img_path = os.path.join(data_dir, path) img = loadImagetoTensor(img_path) img = paddle.transpose(img, [2, 0, 1])#转换维度 # 剖析地址失去label lbl = path.split('.')[0] lbl = 0 if lbl == 'dog' else 1 train_data.append((img, lbl)) cnt += 1 if cnt == 5000: cnt = 0 break# 咱们取其中训练集中的前500张作为测试集test_data = train_data[:500]train_data = train_data[500:]def getBatch(data: list): imgs = [] lbls = [] img, lbl = [], [] #将data打包成batch for idx, val in enumerate(data): if idx > 0 and idx % batch_size == 0: imgs.append(img) lbls.append(lbl) img, lbl = [], [] img.append(val[0]) lbl.append(val[1]) return paddle.to_tensor(imgs), paddle.to_tensor(lbls)(train_imgs, train_lbls) = getBatch(train_data)print(train_imgs.shape)print("数据加载实现")运行后果如图: ...

March 15, 2023 · 4 min · jiezi

关于机器学习:书籍推荐卡尔曼滤波与信息融合

书籍:Kalman Filtering and Information Fusion作者:马宏宾,闫莉萍,夏元清,付梦印出版:Science Press Beijing,Springer入群邀请:7个业余方向交换群+1个材料需要群原文地址:书籍举荐-《卡尔曼滤波与信息交融》 01 书籍介绍这本书讲述了数字信息处理的一项关键技术:卡尔曼滤波,这被普遍认为是20世纪最平凡的发现之一。 本书向读者介绍了单设施中各种不确定性的问题,以及基于自适应预计的相应解决方案。此外,本文还具体探讨了卡尔曼滤波技术利用于多传感器零碎/多智能体零碎时呈现的问题,特地是在智能机器人、主动驾驶汽车、智能家居、智能建筑等须要多传感器信息交融技术的零碎中应用各种传感器时。 此外,当多个智能体(子系统)相互作用时,会产生耦合不确定性,这是一个具备挑战性的问题,本文将借助于新鲜的扩散自适应滤波技术加以解决。 本书的指标是为读者提供一个全面的介绍,使卡尔曼滤波在存在各种不确定性/多个传感器/组件的状况下良好工作的挑战性问题。介绍了最先进的技术,以及大量新鲜的发现。因而,它能够成为钻研人员的一本很好的参考书;它也能够作为数学、工程、自动化和相干畛域学生的研究生教材。 浏览本书,只须要对线性代数和概率论有根本的把握,不过有最小二乘法、导航、机器人等方面的教训必定是更好的。 02 作者介绍马宏宾,北京理工大学传授、博士生导师,钻研方向为计算机视觉/人工智能,自适应预计、管制与智能博弈、智能自主零碎/机器人。入选教育部新世纪优秀人才、北京市优秀人才赞助打算,获北京市自然科学奖、中国产学研单干创新奖、霍英东高等院校青年教师奖、吴文俊人工智能科学技术奖、中国大数据学术创新奖、优良科技成果大赛金奖。参加多项机器人、人工智能、大数据、云平台相干国家标准的研制。 闫莉萍,北京理工大学传授、博士生导师,钻研方向为多传感器数据交融、故障诊断、指标跟踪、组合导航和智能导航。在国内外学术期刊上发表学术论文30余篇,其中,SCI收录4篇,EI收录20篇,局部研究成果发表在国内重要期刊,在异步数据交融方面的研究成果曾被国外同行专家评估为“原始性翻新”。主持的基金项目次要有国家自然科学基金(青年基金)、教育部科研基地科技撑持打算、校优秀青年老师基金扩大我的项目等。博士后期间,曾主持中国博士后科学基金面上一等赞助和特地赞助各1项。 夏元清,北京理工大学讲席传授,博士生导师,北京理工大学自动化学院院长。次要钻研方向:网络化信息处理与管制、飞行器管制、无人挪动平台协同管制、天地一体化网络协同管制。研究成果取得国家科学技术进步奖二等奖1项(排名第二),省部级科技奖二等奖3项(均排名第一),在国内外重要学术刊物上发表学术论文200余篇,其中被SCI收录160余篇,出版英文专著8本。2009年入选教育部“新世纪优秀人才反对打算”,2011年受聘北京理工大学“徐特立特聘传授”,2012年取得国家杰出青年科学基金赞助,2014年入选科技部中青年科技翻新领军人才 [1-2] ,2016年入选国家“万人打算”领军人才。 付梦印,南京理工大学党委副书记、校长,中国工程院院士,长江学者,获何梁何利科技奖、全国翻新争先奖、全国优良科技工作者、光华工程奖(青年奖),享受国务院政府特殊津贴。负责中国兵工学会副理事长、多个特种配备零碎副总师。次要从事组合导航与智能导航技术钻研,在组合导航系统、高动静陀螺技术、陆用自主导航与关键技术等方面获得了系列成绩。主持国家自然科学基金重大仪器、重点项目、根底增强我的项目、国家重大需要畛域我的项目等多个我的项目,承当研制国家重大需要畛域系列产品,已进口十多个国家,为国家博得了良好的经济效益和政治影响力。以第一实现人获国家科技进步一等奖1项、二等奖2项,国家技术创造二等奖1项,省部级奖近20项。发表学术论文150余篇,获国家技术创造受权60余项,出版学术专著近10部。 03  书籍纲要1. ECCV2022 | CramNet:三维物体检测基于射线束缚穿插注意力机制的相机-毫米波雷达交融 超具体 BEV 感知技术钻研综述、BEV 感知实用工具箱Toolbox 及相干数据集分享书籍举荐-《自主无人零碎的智能环境感知技术》深度相机+激光雷达实现SLAM建图与导航书籍举荐-《机器人感知与认知中的深度学习》BEV感知中的视觉-毫米波雷达交融综述

March 14, 2023 · 1 min · jiezi

关于机器学习:resnet50-一共有多少层层数计算

ResNet50 卷积神经网络简介 ResNet-50非凡层详解 再来看看代码层面的 import torchvision.models as modelsimport torch.nn as nnfrom loguru import loggerresnet50_model = models.resnet50()features = list(resnet50_model.children())for index, layer in enumerate(list(resnet50_model.children())): logger.debug(f'第 {index} 层(从 0 开始算)') print(layer)输入 2023-03-14 15:55:07.713 | DEBUG | __main__:<module>:11 - 第 0 层(从 0 开始算)Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)2023-03-14 15:55:07.713 | DEBUG | __main__:<module>:11 - 第 1 层(从 0 开始算)BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)2023-03-14 15:55:07.713 | DEBUG | __main__:<module>:11 - 第 2 层(从 0 开始算)ReLU(inplace=True)2023-03-14 15:55:07.713 | DEBUG | __main__:<module>:11 - 第 3 层(从 0 开始算)MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)2023-03-14 15:55:07.713 | DEBUG | __main__:<module>:11 - 第 4 层(从 0 开始算)Sequential( (0): Bottleneck( (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ))2023-03-14 15:55:07.714 | DEBUG | __main__:<module>:11 - 第 5 层(从 0 开始算)Sequential( (0): Bottleneck( (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False) (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (3): Bottleneck( (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ))2023-03-14 15:55:07.714 | DEBUG | __main__:<module>:11 - 第 6 层(从 0 开始算)Sequential( (0): Bottleneck( (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False) (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (3): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (4): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (5): Bottleneck( (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ))2023-03-14 15:55:07.714 | DEBUG | __main__:<module>:11 - 第 7 层(从 0 开始算)Sequential( (0): Bottleneck( (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) (downsample): Sequential( (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False) (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) ) (1): Bottleneck( (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ) (2): Bottleneck( (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (relu): ReLU(inplace=True) ))2023-03-14 15:55:07.715 | DEBUG | __main__:<module>:11 - 第 8 层(从 0 开始算)AdaptiveAvgPool2d(output_size=(1, 1))2023-03-14 15:55:07.715 | DEBUG | __main__:<module>:11 - 第 9 层(从 0 开始算)Linear(in_features=2048, out_features=1000, bias=True)

March 14, 2023 · 5 min · jiezi

关于机器学习:机器学习算法支持向量机

反对向量机(SVM)[toc] 一、什么是反对向量机反对向量机在高纬或有限维空间中结构超平面或超平面汇合,其能够用于分类、回归或其余工作。直观来说,分类边界间隔最近的训练材料点越远越好,因为这样能够放大分类器的泛化误差。 https://zh.wikipedia.org/zh-cn/%E6%94%AF%E6%8C%81%E5%90%91%E9...外面波及到几个概念:1、超平面;2、泛化误差;3、反对向量 什么是超平面呢?如果咱们是在用反对向量机来解决二分类问题吧。咱们构想如果在一个直角坐标系外面存在两个不同类别:黑点和紫点。当初咱们须要将他们进行拆散,你会怎么做?你或者会说:这还不简略间接画一条线不久完事了吗?看来你明确什么是超平面,好的咱们看下图: 那么到底是蓝色好呢?还是黄色好呢?这就是咱们要提的第二个概念——泛化误差 什么是泛化误差认真看图可能会相对蓝色最佳呀,为什么呢?因为箭头标记的点他是间隔最短的呀!听起来仿佛很有情理,然而,咱们个别试验都是取局部样本进行测试,因为训练集的局限性或噪声的因素,训练集外的样本可能比图中的训练样本更靠近两个类的分隔界,这将使许多划分超平面呈现谬误,而黄色的超平面受影响最小。这就是咱们要思考的——泛化误差!直观了解就是:在新退出样本点的时候超平面仍旧能够很好的划分数据点。 什么是反对向量咱们将超平面别离加减常数C这样的话咱们的超平面就会产生挪动然而挪动多少呢?当咱们挪动到接触样本数据点,而这些样本数据点就决定了咱们的距离间隔(卖个关子),他们就叫反对向量 说了那么多,怎么求这个超平面方程呢?(可能会波及许多的数学知识,想间接理解代码间接跳过这部分) 二、数学实践机器学习算法和数学知识离不开关系,我尽可能的简化数学知识,当然如果只想要代码也能够,然而得晓得如何调参 反对向量机的有效性取决于核函数、核参数和软距离参数 C 的抉择2.1 数学准备常识两直线间隔$$设存在两平行直线:A_0x+B_0y+b_0=0;A_0x+B_0y+b_1=0;则他们之间的间隔为:\\d=\frac{|b_1-b_0|}{\sqrt{A_0^2+B_0^2}}$$ 二次布局问题形如:$$min\;\;c^Tx+\frac{1}{2}x^TQx\\subject\;to:Dx\geqslant d\\Ax=b$$ 如果Q≥0时,那么此时就是凸优化问题 拉格朗日乘子法拉格朗日乘子法是一种将束缚优化问题转化为无约束优化问题的办法,咱们当初要求解如下优化(最小化)问题: $$minf(x)\;\;s.t.\;g(x)=0$$ 也就是求解f(x)在约束条件g(x)=0的条件下的最小值的问题。那么咱们能够引入拉格朗日函数: $$L(x,\alpha)=f(x)+\alpha g(x)\;\;\; \alpha 记作拉格朗日乘子$$ 形象了解拉格朗日乘子法 - 知乎 (zhihu.com)KKT约束条件Karush-Kuhn-Tucker (KKT)条件 - 知乎 (zhihu.com)2.2 线性可分反对向量机什么是线性可分?不说概念,直观了解就是:咱们能够间接通过一条直线或者一个立体去划分数据集,那这就叫线性可分反对向量机!比如说:咱们有训练数据集:$T=[(x_1,y_1),(x_2,y_2)]$当初咱们须要找到一条直线划分他们,我想你会立马想到$ax+by+c=0$这个方程。很好那么咱们推广到n个点的状况。 给定训练数据集: $$T=[(x_1,y_1)......(x_n,y_n)]$$ 这种状况下怎么办呢?同样的办法咱们假如超平面方程为: $$w^Tx+b=0\\其中w,b都是模型参数,留神此时w就不是一个数字而是一个向量!$$ 那么的话咱们方程也有了,接下来问题就转化成求解$w,b$参数具体的值的问题了。再次回顾咱们2元的点到直线间隔公式:$d=\frac{|ax+by+c|}{\sqrt{a^2+b^2}}$同样的情理咱们推到到多维状况: $$d=\frac{|w^Tx+b|}{||w||}$$ 不要遗记咱们的出发点是什么:二分类!也就是说咱们要将咱们的点划分开来,这样的话是不是在超平面的某一侧是a类另外一侧则是b类,还记得咱们后面提到的距离间隔吗?咱们设: $$\begin{cases} w^Tx_i+b\geqslant1,y_i=1\\ w^Tx_i+b\leqslant1,y_i=-1\end{cases}\\\text{这样的话两个超平面的间隔就是}r=\frac{2}{||w||}$$ 超平面间隔就能够类比两平行直线之间间隔这样的话咱们就是找到最大“距离”也就是说计算: $$max\frac{2}{||w||}简化计算记作min\frac{1}{2}||w||^2\\subject\;to\;y_i(w^Tx_i+b)\geqslant1,\;i=1,2....n$$ 利用拉格朗日乘子法进行求解: $$公式1\;\;L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i(1-y_i(w^Tx_i+b))\\||w||^2=w^Tw$$ 此时咱们对w,b别离计算偏导并且令其为0失去: $$公式2\;\;w=\sum_{i=1}^{m}\alpha_iy_ix_i\;\;\sum_{i=1}^{m}\alpha_iy_i=0$$ 将公式2代入公式1失去: $$公式3\;\;max\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_iy_ix^T_i\alpha_jy_jx_j$$ 计算步骤如下: 上述过程须要满足KKT条件: $$\begin{cases} \alpha_i\ge0\\y_if(x_i)-1\ge0\\\alpha_i(y_if(x_i)-1)=0\end{cases}$$ 后续更新核函数、python代码、算法流程、以及如何求解,自己忙于筹备考试临时没工夫更新,忙过这段将全副机器学习算法补充结束 三、Python代码先上sklearn代码,后续手撸源代码 https://scikit-learn.org/stable/modules/svm.html四、评估长处 能够解决高维问题,即大型特色空间;解决小样本下机器学习问题;可能解决非线性特色的相互作用;无部分极小值问题;(绝对于神经网络等算法)无需依赖整个数据;泛化能力比拟强;毛病 当观测样本很多时,效率并不是很高;对非线性问题没有通用解决方案,有时候很难找到一个适合的核函数;对于核函数的高维映射解释力不强,尤其是径向基函数;惯例SVM只反对二分类;对缺失数据敏感;五、算法流程七、参考https://zhuanlan.zhihu.com/p/440297403 李航《统计学学习办法(第二版)》 《西瓜书》

March 14, 2023 · 1 min · jiezi

关于机器学习:从稀疏表征出发召回方向的前沿探索

作者 | lhy12138 导读 目前百度大搜次要有基于稠密表征的倒排检索和浓密表征的语义检索双路召回。随着深度学习技术的倒退,语义检索的召回成果失去了显著进步;与此同时,因为稠密表征有着准确匹配、索引效率和可解释的劣势,最近学术界从新将眼光放回稠密表征架构,钻研稠密表征如何从大规模语言模型中获益。本文将介绍学术界在倒排召回和语义召回的最新进展。 全文6386字,预计浏览工夫16分钟。 01 搜寻中的召回召回个别会从海量候选库中抉择与query相干的文档送给下层排序模块,因为效率起因,往往无奈执行query-url细粒度交互。目前召回次要有基于term的传统倒排召回和基于向量表征的语义召回。本文将介绍两个方向在学术届的一些最新进展。 02 如何对待语义召回和传统倒排召回的关系?随着预训练模型和样本技术的更新,语义召回体现了弱小的检索成果,而传统倒排技术因为老本、效率问题并没有取得成果的显著进步。倒排召回基于term归并,因而具备较强的可解释性;而语义召回在向量空间搜寻与query语义最类似的文档,对语义的表达能力更强。应该如何对待两者在召回链路上的关系呢? Are We There Yet? A Decision Framework for Replacing Term Based Retrieval with Dense Retrieval Systems 这篇论文提出了一套框架,包含一组指标(不仅从成果登程),彻底比拟两个检索系统。 次要规范(成果/老本) 以及主要规范(robustness): 主要规范:子问题汇合的成果(如长度在某个范畴的q、频率在某个范畴的q、lexical匹配的能力、模型的泛化能力、决策显著差别比例、甚至是零碎可维护性、将来迭代空间、老本)最终论文在一个检索评估集上给出了相应的论断:即在向量化老本可承受的前提下,语义召回零碎能够代替倒排召回零碎。而在理论工业界对应的问题往往更为简单,但论文提出的剖析框架正是咱们须要从新扫视和思考的内容。 BEIR: A heterogenous benchmark for zero-shot evaluation of information retrieval models 这篇论文对学术界现有检索相干数据集进行汇总,从各个领域汇总了不同上游工作中对检索能力的需要,以全面地评估现有召回模型的成果。从表格能够看到一些有意思的论断:在zero-shot的场景下,BM25是一个十分强壮的检索系统。基于term细粒度语义交互的两种办法(colbert/BM25+CE)依然体现了统一的优越性。但稠密表征和浓密表征的双塔模型仿佛体现不佳。同时察看到doc2query是一个稳固的晋升,因为它只会扩大词,更像是对BM25的合理性改变,检索形式和打分逻辑与BM25统一。 同时作者也提到,数据集存在词汇偏差问题:标注候选来自于BM25检索,因而可能对不依赖词汇匹配的模型存在好后果的漏标注问题,对新召回后果标注后: 其中语义召回模型(如ANCE)指标显著进步。 通过以上两篇论文发现,不论是倒排召回还是语义召回在不同场景下有着本人独立的劣势,因而咱们在后文会针对两个方向别离介绍相干停顿。 03 倒排召回新倒退如果想通过现有技术促成倒排倒退,咱们有哪些能够尝试的计划? 最新进展: 可学习的稠密表征(将query剖析、doc了解以及检索匹配交融成端到端工作,但以稠密向量别离示意query和doc),依然依靠倒排的检索形式,因而保留倒排的劣势(可解释、term匹配能力强),同时进一步晋升语义泛化能力。 SPLADE: Sparse lexical and expansion model for first stage ranking 稠密表征:用整个词表从新形容doc,同时实现对term weight和term expansion。 能够看到,最终每个文档被形容为term和score的模式,同时会删除文档已有冗余词和减少相应扩大词。 稠密表征和预训练任务中mask language model工作很像,将每个token通过transformer示意后最终还原到词表信息中,因而稠密表征复用了mlm工作的head。 通过汇总(pooling)原始query/doc中的所有稠密示意,将query/doc示意成一个词表维度的稠密向量,并且引入flops正则来管制扩大term的数量。同时在稠密表征的根底上通过点积的模式计算q-u匹配得分。 ...

March 14, 2023 · 2 min · jiezi

关于机器学习:集成时间序列模型提高预测精度

应用Catboost从RNN、ARIMA和Prophet模型中提取信号进行预测 集成各种弱学习器能够进步预测精度,然而如果咱们的模型曾经很弱小了,集成学习往往也可能起到精益求精的作用。风行的机器学习库scikit-learn提供了一个StackingRegressor,能够用于工夫序列工作。然而StackingRegressor有一个局限性;它只承受其余scikit-learn模型类和api。所以像ARIMA这样在scikit-learn中不可用的模型,或者来自深度神经网络的模型都无奈应用。在这篇文章中,我将展现如何重叠咱们能见到的模型的预测。 咱们将用到上面的包: pip install --upgrade scalecast conda install tensorflow conda install shap conda install -c conda-forge cmdstanpy pip install prophet数据集数据集每小时一次,分为训练集(700个观测值)和测试集(48个观测值)。上面代码是读取数据并将其存储在Forecaster对象中: importpandasaspd importnumpyasnp fromscalecast.ForecasterimportForecaster fromscalecast.utilimportmetrics importmatplotlib.pyplotasplt importseabornassns defread_data(idx='H1', cis=True, metrics= ['smape']): info=pd.read_csv( 'M4-info.csv', index_col=0, parse_dates=['StartingDate'], dayfirst=True, ) train=pd.read_csv( f'Hourly-train.csv', index_col=0, ).loc[idx] test=pd.read_csv( f'Hourly-test.csv', index_col=0, ).loc[idx] y=train.values sd=info.loc[idx,'StartingDate'] fcst_horizon=info.loc[idx,'Horizon'] cd=pd.date_range( start=sd, freq='H', periods=len(y), ) f=Forecaster( y=y, # observed values current_dates=cd, # current dates future_dates=fcst_horizon, # forecast length test_length=fcst_horizon, # test-set length cis=cis, # whether to evaluate intervals for each model metrics=metrics, # what metrics to evaluate ) returnf, test.values f, test_set=read_data() f# display the Forecaster object后果是这样的: ...

March 14, 2023 · 2 min · jiezi

关于机器学习:机器学习项目实战工业蒸汽之数据探索

注:某些图片截取了一部分,不残缺。外围要领:通过各种对数据进行可视化,剖析数据特色,进行增删改(包含缺失值解决,删除影响模型泛化的数据,进行数据变换从而更好地满足模型的假如条件,数据归一化等)。除了数据自身的进行可视化形容,还能够将数据集和训练集进行比拟。 导入数据的工具包import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom scipy import statsimport warningswarnings.filterwarnings("ignore")%matplotlib inline#%matplotlib inline 能够在Ipython编译器里间接应用,性能是能够内嵌绘图,并且能够省略掉plt.show()这一步。读取数据文件应用Pandas库read_csv()函数进行数据读取,宰割符为‘\t’ train_data_file = "./zhengqi_train.txt"test_data_file = "./zhengqi_test.txt"train_data = pd.read_csv(train_data_file, sep='\t', encoding='utf-8')test_data = pd.read_csv(test_data_file, sep='\t', encoding='utf-8')数据查看(略)查看数据后,阐明多少个特色变量啊,有没有缺失值啊,或者哪些是数值变量,哪些是标签变量啊。找不同点嘛。 画箱图摸索。画箱型图从而对数据进行剖析。一个箱型图 fig=plt.figure(figsize=(4,6))sns.boxplot(train_data['V0'],orient='v',width=0.5)all columns=train_data.columns.tolist()[:39]#由train_data.head()晓得是5rows*39fig=plt.figure(figsize=(10,20))#调整绘图对象宽高for i in range(39): plt.subplot(13,3,i+1)#39个图分成13*3 sns.boxplot(train_data[columns[i]],orient='v',width=0.5) plt.ylabel(columns[i],fontsize=8)plt.show()后果发现我也看不太来,meybe没有什么法则,题解也没说有什么法则。所以换个图来画画,再发现一下? 查看数据分布图查看特色变量v0的数据分布直方图,并绘制Q-Q图看是否近似于正态分布。each fig=plt.figure(figsize=(10,5))ax=plt.subplot(1,2,1)sns.distplot(train_data['V0'],fit=stats.norm)#districution 散布直方图ax=plt.subplot(1,2,2)res=stats.probplot(train_data['V0'],plot=plt)查看查看所有数据的直方图和Q-Q图,查看训练集的数据是否近似于正态分布 train_cols=6train_rows=len(train_data.columns)plt.figure(figsize=(4*train_cols,4*train_rows))i=1for col in train_data.columns: ax=plt.subplot(train_rows,train_cols,i) sns.distplot(train_data[col],fit=stats.norm) i+=1 ax=plt.subplot(train_rows,train_cols,i) res=stats.probplot(train_data[col],plot=plt) i+=1plt.show()由下面的数据分布图信息能够看出,很多特色变量(如'V1','V9','V24','V28'等)的数据分布不是正态的,数据并不追随对角线,后续能够应用数据变换对数据进行转换。 比照一下训练集和验证集的数据分布状况是否统一ax = sns.kdeplot(train_data['V0'], color="Red", shade=True)ax = sns.kdeplot(test_data['V0'], color="Blue", shade=True)ax.set_xlabel('V0')ax.set_ylabel("Frequency")ax = ax.legend(["train","test"])查看所有特色变量下,测试集和数据集的散布状况,剖析并寻找出数据不统一的特色变量。 dist_cols = 6dist_rows = len(test_data.columns)plt.figure(figsize=(4*dist_cols,4*dist_rows))i=1for col in test_data.columns: ax=plt.subplot(dist_rows,dist_cols,i) ax = sns.kdeplot(train_data[col], color="Red", shade=True) ax = sns.kdeplot(test_data[col], color="Blue", shade=True) ax.set_xlabel(col) ax.set_ylabel("Frequency") ax = ax.legend(["train","test"]) i+=1plt.show()发现几个特地的,查看一下。查看特色'V5', 'V17', 'V28', 'V22', 'V11', 'V9'数据的数据分布 ...

March 13, 2023 · 2 min · jiezi

关于机器学习:图神经网络的数学原理总结

图深度学习(Graph Deep Learning) 多年来始终在减速倒退。许多现实生活问题使GDL成为万能工具:在社交媒体、药物发现、芯片植入、预测、生物信息学等方面都显示出了很大的前景。 本文将风行的图神经网络及其数学细微差别的进行具体的梳理和解释,图深度学习背地的思维是学习具备节点和边的图的构造和空间特色,这些节点和边示意实体及其交互。 图在咱们进入图神经网络之前,让咱们先来摸索一下计算机科学中的图是什么。 图G(V,E)是蕴含一组顶点(节点)i∈v和一组连贯顶点i和j的边eij∈E的数据结构,如果连贯两个节点i和j,则eij=1,否则eij=0。能够将连贯信息存储在邻接矩阵A中: 我假如本文中的图是无加权的(没有边权值或间隔)和无向的(节点之间没有方向关联),并且假如这些图是同质的(繁多类型的节点和边;相同的是“异质”)。 图与惯例数据的不同之处在于,它们具备神经网络必须尊重的构造;不利用它就太节约了。上面的图是一个社交媒体图的例子,节点是用户,边是他们的互动(比方关注/点赞/转发)。 对于图像来说,图像自身就是一个图!这是一种叫做“网格图”的非凡变体,其中对于所有外部节点和角节点,来自节点的内向边的数量是恒定的。在图像网格图中存在一些统一的构造,容许对其执行简略的相似卷积的操作。 图像能够被认为是一种非凡的图,其中每个像素都是一个节点,并通过虚线与四周的其余像素连贯。当然,以这种形式查看图像是不切实际的,因为这意味着须要一个十分大的图。例如,32×32×3的一个简略的CIFAR-10图像会有3072个节点和1984条边。对于224×224×3的较大ImageNet图像,这些数字会更大。 与图片相比,图的不同的节点与其余节点的连贯数量不同,并且没有固定的构造,然而就是这种构造为图减少了价值。 图神经网络单个图神经网络(GNN)层有一堆步骤,在图中的每个节点上会执行: 消息传递聚合更新这些组成了对图形进行学习的构建块,GDL的翻新都是在这3个步骤的进行的扭转。 节点 节点示意一个实体或对象,如用户或原子。因而节点具备所示意实体的一系列属性。这些节点属性造成了节点的特色(即“节点特色”或“节点嵌入”)。 通常,这些特色能够用Rd中的向量示意. 这个向量要么是潜维嵌入,要么是以每个条目都是实体的不同属性的形式结构的。 例如,在社交媒体图中,用户节点具备能够用数字示意的年龄、性别、政治偏向、关系状态等属性。在分子图中,原子节点可能具备化学性质,如对水的亲和力、力、能量等,也能够用数字示意。 这些节点特色是GNN的输出,每个节点i具备关联的节点特色xi∈Rd和标签yi(能够是间断的,也能够是离散的,就像独自编码一样)。 边 边也能够有特色aij∈Rd '例如,在边缘有意义的状况下(如原子之间的化学键)。咱们能够把上面的分子设想成一个图,其中原子是节点,键是边。尽管原子节点自身有各自的特征向量,但边能够有不同的边特色,编码不同类型的键(单键、双键、三键)。不过为了简略起见,在本文中我将省略边的个性。 当初咱们晓得了如何在图中示意节点和边,让咱们从一个具备一堆节点(具备节点特色)和边的简略图开始。 消息传递 gnn以其学习构造信息的能力而闻名。通常,具备类似特色或属性的节点相互连接(比方在社交媒体中)。GNN利用学习特定节点如何以及为什么相互连接,GNN会查看节点的邻域。 街坊Ni,节点I的汇合定义为通过边与I相连的节点j的汇合。模式为Ni={j: eij∈E}。 一个人被他所处的圈子所影响。相似地GNN能够通过查看其街坊Ni中的节点i来理解很多对于节点i的信息。为了在源节点i和它的街坊节点j之间实现这种信息共享,gnn进行消息传递。 对于GNN层,消息传递被定义为获取街坊的节点特色,转换它们并将它们“传递”给源节点的过程。对于图中的所有节点,并行地反复这个过程。这样,在这一步完结时,所有的邻域都将被查看。 让咱们放大节点6并查看邻域N6={1,3,4}。咱们取每个节点特色x1、x3和x4,用函数F对它们进行变换,函数F能够是一个简略的神经网络(MLP或RNN),也能够是仿射变换F(xj)=Wj⋅xj+b。简略地说,“音讯”是来自源节点的转换后的节点特色。 F 能够是简略的仿射变换或神经网络。当初咱们设F(xj)=Wj⋅xj为了不便计算 ⋅ 示意简略的矩阵乘法。 聚合 当初咱们有了转换后的音讯{F(x1),F(x3),F(x4)}传递给节点6,上面就必须以某种形式聚合(“组合”)它们。有很多办法能够将它们联合起来。罕用的聚合函数包含: 假如咱们应用函数G来聚合街坊的音讯(应用sum、mean、max或min)。最终聚合的音讯能够示意为: 更新 应用这些聚合音讯,GNN层就要更新源节点i的个性。在这个更新步骤的最初,节点不仅应该晓得本人,还应该晓得它的街坊。这是通过获取节点i的特征向量并将其与聚合的音讯相结合来操作的,一个简略的加法或连贯操作就能够解决这个问题。 应用加法 其中是一个激活函数(ReLU, ELU, Tanh), H是一个简略的神经网络(MLP)或仿射变换,K是另一个MLP,将加法的向量投影到另一个维度。 应用连贯: 为了进一步形象这个更新步骤,咱们能够将K看作某个投影函数,它将音讯和源节点嵌入一起转换: 初始节点特色称为xi,在通过第一GNN层后,咱们将节点特色变为hi。假如咱们有更多的GNN层,咱们能够用hli示意节点特色,其中l是以后GNN层索引。同样,显然h0i=xi(即GNN的输出)。 整合在一起 当初咱们曾经实现了消息传递、聚合和更新步骤,让咱们把它们放在一起,在单个节点i上造成单个GNN层: 这里咱们应用求和聚合和一个简略的前馈层作为函数F和H。设hi∈Rd, W1,W2⊆Rd ' ×d其中d '为嵌入维数。 ...

March 13, 2023 · 1 min · jiezi

关于机器学习:FINC3600-财政问题求解

FINC3600 Finance in Practice S1 2023 Project 1: Corporate Finance Brief Project Learning ObjectivesBy completing this assignment you will:Learn to apply corporate finance concepts and techniques from past finance courses in arealistic business setting.Communicate complex financial reasoning to a diverse audience, both in writing and inperson.Gain insight into how corporate finance teams work and the effective operation ofcollaboration and peer review in a team environment. Gain insight into synthesising corporate finance theory and analysis of market data intocorporate finance advice.Work effectively in an online environment. ...

March 12, 2023 · 24 min · jiezi

关于机器学习:降维算法-奇异值分解SVD

动动发财的小手,点个赞吧! 1. 为什么降维总所周知,在低维下,数据更容易解决,然而在通常状况下咱们的数据并不是如此,往往会有很多的特色,进而就会呈现很多问题: 多余的特色会影响或误导学习器更多特色意味着更多参数须要调整,过拟合危险也越大数据的维度可能只是虚高,实在维度可能比拟小维度越少意味着训练越快,更多货色能够尝试,可能失去更好的后果如果咱们想要可视化数据,就必须限度在两个或三个维度上因而,咱们须要通过降维(dimensionality reduction)把无关或冗余的特色删掉。 现有降维办法: 2. SVD 概述奇怪值合成(Singular Value Decomposition)简称SVD,次要作用是简化数据,提取信息。 利用SVD实现,咱们可能用小得多的数据集来示意原始数据集。这样做,实际上是去除了噪声和冗余信息。当咱们试图节俭空间时,去除噪声和冗余信息就是很高尚的指标了,然而在这里咱们则是从数据中抽取信息。基于这个视角,咱们就能够把SVD看成是从有噪声数据中抽取相干特色。 SVD是如何从这些充斥着大量噪声的数据中抽取相干特色呢?SVD的公式: 这个公式中, U 和 V 都是正交矩阵,即: 原始数据集A是一个m行n列的矩阵,它被分解成了三个矩阵,别离是: 这个公式用到的就是矩阵合成技术。在线性代数中还有很多矩阵合成技术。矩阵合成能够将原始矩阵示意成新的易于解决的模式,这种新模式是两个或多个矩阵的乘积。 不同的矩阵合成技术具备不同的性质,其中有些更适宜于某个利用,有些则更适宜于其余利用。最常见的一种矩阵合成技术就是SVD。 Example Example 3. SVD 的利用3.1. 信息检索最早的SVD利用之一就是信息检索。利用SVD办法为隐形语义索引(Latent Semantic Indexing,LSI)或者隐形语义剖析(Latent Semantic Analysis,LSA)。 在LSI中,一个矩阵是由文档和词语组成的。当咱们在该矩阵上利用SVD时,就会构建出多个奇怪值。这些奇怪值代表了文档中的概念或主题,这一特点能够用于更高效的文档搜寻。在词语拼写错误时,只基于词语存在与否的简略搜寻办法会遇到问题。简略搜寻的另一个问题就是同义词的应用。这就是说,当咱们查找一个词时,其同义词所在的文档可能并不会匹配上。如果咱们从上千篇类似的文档中抽取出概念,那么同义词就会映射为同一概念。 这样就能够大大提高文档搜寻的效率。 3.2. 举荐零碎SVD的另外一个利用就是举荐零碎。也是目前SVD最次要的一个利用简略版本的举荐零碎可能计算项或者人之间的类似度。更先进的办法则先利用SVD从数据中构建一个主题空间,而后再在该空间下计算其类似度。 本文由mdnice多平台公布

March 12, 2023 · 1 min · jiezi

关于机器学习:物理学又不存在了ChatGPT室温超导是物理学的一个梦想

大家好,我是小彭。 就在前天,一组微信聊天记录忽然开始在各大群中流传: 随后,这一新闻间接引爆各大社交媒体,物理学又双叒叕不存在了吗? 到底是什么重磅音讯呢? 原来在美国物理学会的三月会议上,美国纽约罗切斯特大学的 Ranga Dias 团队公布了一项研究成果 —— 他们发现了可能在室温环境下实现超导景象的资料。 简略来说 “超导体” 就是 “超级能导电的物体”,就是电阻为 0 的物体。零电阻传输电能就没有损耗,能够极大地提高能源的利用率,缩小能源的损耗和节约,对全世界的用电模式有极大的影响。 如果能实现商用,将极大地促成小到芯片大到电网输电甚至可控核聚变的倒退。 不过超导体并不是新概念,只是之前研发的超导资料存在很大的局限性,要么须要极高温,要么须要极低压强。而 Dias 团队这次的研究成果的要害冲破是近环境压强(一万个大气压强)和 21 度室温,相比于以往动辄几百万大气压强和液氮高温环境曾经是很大的提高。 晓得这个音讯后,有些人坐不住了。室温超导才刚在物理学界掀起小浪花,在二级市场曾经一石激起千层浪。室温超导是否扭转世界不晓得,反正至多能扭转股价,股价先冲一波: 于是,不少 A 股股民(韭菜)闻声而动,开始连夜学习室温超导相干常识,还有人乐此不疲地在微信群内里分享专家交换纪要。起初事件越来越离谱,室温超导开始传成温室超导…… 为了避免成为二级市场上跟风的韭菜,我决定找 ChatGPT 问问看: ChatGPT 也提到了电阻造成的能量损耗问题,还说室温超导是物理学中的长期幻想,格局还是你大。 第二个问题是研究成果的可靠性: Dias 团队在超导畛域的论文已经被 Nature 撤稿,所以这次的研究成果还面临着很多挑战。 在 Nature 杂志上,还有一篇与 Dias 团队同期公布的点评文章 《Hopes raised for room-temperature superconductivity, but doubts remain》 ,这篇文章介绍了 Dias 团队的试验后果和办法,以及其余研究者对他们的质疑和批评。文章认为: 这项钻研有可能是一个重大的冲破,但也须要更多的证据和复现来反对它。 看来这项试验成绩的可靠性还须要让子弹飞一会~ 第三个问题是我比拟感兴趣的点,咱们在 《程序员学习 CPU 有什么用?》这篇文章里提到过 CPU 主频的性能瓶颈问题:一般来说,晋升主频对于 CPU 的性能影响是最间接的,然而计算性能越高则功耗也越大,发热也会越重大。 ...

March 11, 2023 · 1 min · jiezi

关于机器学习:COMSM0088-先进数据分析方法

Tableau Geocoding Cheat SheetAdvanced Data AnalyticsCOMSM00881 PreambleTableau, for whatever reason, does not natively support UK territory geocodingout of the box. As such, if we want to represent our data as a map, there aresome steps we must follow before simply dragging data onto the sheet.There are two ways in which we can gain support for UK geocoding, eachwith their benefits and drawbacks.1.1 Geocoding PacksThe simplest way is to make use of a precompiled geocoding pack. These typ-ically overwrite the preexisting geocoding presets offered by Tableau. For thistutorial, we will use the pack offered by Craig Bloodworth of The InformationLab, found here. Or, go to the URL https://www.theinformationlab.co.uk/2015/06/01/uk-filled-map-geocoding-pack-for-tableau/ This is ref-erenced in the coursework specification.Download the geocoding pack, following either the link available in the abovereferenced webpage, or directly from here, or https://fileshare.theinformationlab.co.uk/index.php/s/RIHqO61bWZsWvaY/download.1.1.1 Setting up the Geocoding PackFollow the steps below in order to correctly set up the geocoding pack afterdownloading it. ...

March 9, 2023 · 5 min · jiezi

关于机器学习:直面技术变革数字化转型中如何把握技术的自主掌控能力

导语 | 对于企业而言,数字化转型降级是当下一直变动环境下惟一确定的方向,拥抱数字化,利用数字技术实现业务增长和翻新是企业经营增长的必修课。5G、人工智能、云计算、大数据、区块链等数字技术将减速实现企业的利用转化,日益融入到企业和社会倒退的各畛域,成为推动数字经济倒退的重要推动力。那么作为企业技术管理者,应该如何把握技术的发展趋势,并更好利用到数字化转型过程中?咱们特邀腾讯云 TVP 顾黄亮老师,在他新书《技术赋能:数字化转型的基石》的根底上带咱们从技术管理者视角,解读数字技术和数字化转型的痛点。作者简介 顾黄亮,腾讯云 TVP,畅销书《DevOps 权威指南》和《技术赋能:数字化转型的基石》作者,中国商联专家智库入库专家、国家互联网数据中心产业技术创新策略联盟(NIISA)智库专家委员会副主任委员、江苏银行业和保险业金融科技专家委员会候选专家、工信部企业数字化转型 IOMM 委员会特聘专家、财联社鲸平台智库入库专家、中国信通院可信云规范特聘专家、中国信通院低代码/无代码推动核心特聘专家,《研发经营一体化(DEVOPS)能力成熟度模型》和《企业 IT 运维倒退白皮书》外围作者,容器云技能大赛课程出品人,多个技术峰会演讲嘉宾,领有丰盛的企业级DevOps 实战经验,专一企业 IT 数字化的转型和落地,致力于企业智慧运维体系的打造。 引言数字化转型的一个重要步骤是数字化能力的建设。与信息化能力相比,数字化能力的要求更高,既要反对企业在全面数字化经营、数字生态的全局场景中具备数字化能力,还要在数字可视、科技左移、弹性单干、数字危险、数字经营等细分场景中将数字场景与业务场景进行交融,确保企业在竞争过程中做到麻利应答、高效经营与继续翻新。 然而大多数企业在数字化转型的过程中,其技术层面的痛点往往导致数字化“底座”呈现不稳固的状况。例如,在企业零碎的数字化革新过程中,因原有的零碎老旧、管理制度传统、流程简单,传统的业务零碎和数字化零碎呈现流程、数据、场景不兼容等问题,整体重构老本昂扬,同时会影响企业的失常展业。 企业的数字化零碎架构须要泛滥的新技术赋能,而新技术的自主掌控能力对企业来说是一个很大的挑战,同时会呈现一系列的技术伦理问题。 防备技术伦理问题技术伦理和商业伦理的概念比拟相似,是技术管理者很容易漠视的问题。 数字化转型中的技术选型,如人工智能技术、活体检测技术、机器人技术等,不可避免地会波及业务场景中客户的隐私权和个人信息爱护等敏感问题。此外,数字生态外部的虚伪信息泛滥,以及业务场景中数据孤岛和数字鸿沟的问题,也属于技术伦理的领域。 尤其在近程办公过程中,交付流水线的用户体验不敌对、数字可视场景中的数字对象不敏感、数字危险场景中的危险对象辨认较弱都是数字化转型会遇到的一些问题。 个人隐私泄露和滥用由全国信息安全标准化技术委员会等机构公布的《人脸识别利用公众调研报告(2020)》显示,有九成以上的受访者应用过人脸识别。 在具体用处中,“刷脸领取”最为遍及,有六成受访者认为人脸识别技术有滥用趋势;还有三成受访者示意,曾经因为人脸信息泄露、滥用而蒙受到隐衷或财产损失。 人工智能技术引发的社会问题人工智能是计算机科学的一个分支,它希图理解智能的本质,并生产一种新的、以与人类智能类似的形式做出反馈的智能机器。该畛域的钻研包含机器人、语音辨认、图像识别、自然语言解决和专家系统等。 人工智能从诞生以来,实践和技术日益成熟,应用领域也在不断扩大。能够构想,将来人工智能带来的科技产品将是人类智慧的“容器”。人工智能能够对人的意识、思维等信息过程进行模仿。人工智能尽管不是人的智能,但能像人那样思考,也可能超过人的智能。目前,人工智能在理论利用场景(如智慧医疗、智能制作、智能驾驶等)中均获得了较好的成果。 然而,如果智慧医疗的设施因为系统故障或电力供应等问题而导致误诊,进而导致医疗事故且对患者衰弱造成侵害时,该如何断定医疗侵害责任?如果具备智能驾驶性能的汽车在行驶过程中因为网络故障或数据异样导致重大的交通事故,该如何断定驾驶员在应用智能驾驶性能时的责任?在人工智能的场景使用过程中,技术是否须要承担责任?这些都是社会问题。 技术伦理的治理单薄2022 年,中共中央办公厅、国务院办公厅印发了《对于增强科技伦理治理的意见》,其中明确:科技伦理是发展科学研究、技术开发等科技流动须要遵循的价值理念和行为规范,是促成科技事业衰弱倒退的重要保障。 以后,我国科技翻新疾速倒退,面临的科技伦理挑战日益增多,但科技伦理治理仍存在体制机制不健全、制度不欠缺、畛域倒退不平衡等问题,已难以适应科技翻新倒退的事实须要。 同时,相干的抽样调查结果显示,大量的技术从业人员认为我国科技伦理审查监管制度仍不欠缺,我国对科技伦理失范事件的打击力度仍显有余。因而,对技术伦理的治理还需较长的工夫。 正确认识IT技术与数字技术技术管理者对数字技术的认知通常存在误区,认为“数字技术就是数据技术”或“数字技术就是 IT 技术”。其实,数字技术实质上是 IT 技术的延长,IT 技术通常不具备业务属性,而数字技术具备业务属性。 业务属性体现在数字场景中,如何将企业的商业模式和 IT 技术进行连接,企业的 IT 零碎如何被赋予业务的性能角色,都是技术管理者须要思考的内容。 随着数字化转型的深刻,企业对 IT 部门的定位和冀望产生了颠覆性变动,比拟典型的有从后端到前端的转变、从技术属性到业务属性的转变、从功能化到非功能化的转变、从平台能力到生态能力的转变。 技术管理者须要明确,IT 技术仍然是根底能力,而数字技术是 IT 技术的延长。因而,企业应该将以业务流程为外围的 IT 能力转向以企业数字化经营为外围的数字能力。 除了赋能业务和外部治理,企业在将 IT 能力回升至数字能力的过程中还须要触达更多的用户,包含企业外部员工、企业产品的用户、企业生态上下游的合作伙伴等。向上聚合生态、向下交融资源,充分发挥技术红利,全面赋能数字化商业状态,助力数字化转型策略的达成。 对技术管理者来说,IT 技术的最大痛点在于从老本核心向利润核心的转变,通过利用“向上治理”和“价值链治理”等思维形式对 IT 技术价值进行升华,将价值的边界扩充到企业全域、全流程、全业务。例如,某些企业将“平安、稳固、高效、低成本”作为 IT 组织能力的四大象限,平安和稳固可能确保企业的业务在线,高效和低成本可能确保企业的效力晋升和价值交付能力。 只管靠近 70% 的数字化需要来自业务场景,但这些需要均通过业务在线和产品价值交付来实现,所以数字技术对数字场景的洞察能力远比业务需要更强。 尤其随着数字技术的一直倒退,相干的数字技术门槛在一直升高,最终 IT 技术和数字技术的耦合度会一直减少。 IT 技术和数字技术的边界在于企业策略的执行力,这也能够概括为技术管理者是否具备向上治理的思维,比方思考企业的技术演进和业务策略的匹配度,IT 发展趋势和数据策略的匹配度等。 数字技术是对 IT 技术的能力加强,让 IT 技术具备数字属性和业务属性。通过 IT 技术、数字技术的撑持和驱动,使企业实现业务指标,让企业的业务策略在市场中变得更有竞争力。 ...

March 9, 2023 · 1 min · jiezi

关于机器学习:MAS61006项目研究与实践

MAS61006 Assessed ProjectThis project counts for 40% of the assessment for MAS61006.1 AimThe aim of this project is to assess you on the Bayesian modelling via computational methods skillsthat you have learned on this module. Exploration and choice of appropriate modelling approach, aswell as how you can disseminate your Bayesian inference to a general audience are key elements ofthis assessment.2 BackgroundYou are a statistician working with a pharmaceutical company who market a birth control drug.Your involvement with the client is to assist them in better understanding their potential customerbase by investigating a range of demographic variables that may be linked to the uptake of birthcontrol by a woman. Primary interest is in: Identifying the key demographic variables that have an effect on birth control use, Quantifying any such demographic variable effect, and Predicting the chance of certain demographic groups purchasing birth control in the future (toknow their key marketing groups).There is a single deliverable for this project, in the form of a written report.3 DataThe data made available to you by the client are the results of a market research investigation.This is called birth-control-data.csv, and is available on the course Blackboard page. This datacontains information on 1,934 women regarding the following variables: birthControl: an binary (0/1) response for whether the subject uses birth control (1 encodedas use of birth control and 0 as not), region: a factor variable describing the primary care region that the subject belongs within.Note that this market research involved 60 care regions, which does not cover the full range ofthe company’s target market, homeStyle: a factor variable indicating whether the subject lives in a rural or urban area (0 isencoded as rural, and 1 as urban), children: the number of children the subject has. Note that the average number of childrenan individual has in this market research study is 2.65, age: the age of the subject. Note that this variable has been standardised, so that the averageage in this study is 0, wealth: the financial wealth of the subject. Note that this variable has been standardised, sothat the average wealth measure in this study is 0.1You can import this data to R using the read_csv() function in the usual way.4 Scope of analysisThe requirements of this analysis are: ...

March 9, 2023 · 5 min · jiezi

关于机器学习:Python中函数参数传递方法args-kwargs还有其他

本文将探讨Python的函数参数。咱们将理解args和kwargs,/和的都是什么,尽管这个问题是一个根本的python问题,然而在咱们写代码时会常常遇到,比方timm中就大量应用了这样的参数传递形式。 定义和传递参数parameters 和arguments 之间的区别是什么? 许多人交替应用这些术语,但它们是有区别的: Parameters 是函数定义中定义的名称Arguments是传递给函数的值 红色的是parameters , 绿色的是arguments 传递参数的两种形式 咱们能够按地位和关键字传递参数。在上面的例子中,咱们将值hello作为地位参数传递。值world 用关键字传递的 defthe_func(greeting, thing): print(greeting+' '+thing) the_func('hello', thing='world')地位参数和kwargs(关键字参数)之间的区别在于传递地位参数的程序很重要。如果调用the_func('world', 'hello')它会打印world hello。传递kwargs的程序并不重要: the_func('hello', 'world') # -> 'hello world' the_func('world', 'hello') # -> 'world hello' the_func(greeting='hello', thing='world') # -> 'hello world' the_func(thing='world', greeting='hello') # -> 'hello world' the_func('hello', thing='world') # -> 'hello world'只有kwarg在地位参数之后,就能够混合和匹配地位参数和关键字参数,以上就是咱们在python教程中常常看到的内容,上面咱们持续 函数参数咱们将演示6个函数参数传递的办法,这些办法可能笼罩到所有的问题。 1、如何取得所有未捕捉的地位参数 应用*args,让它接管一个不指定数量的形参。 defmultiply(a, b, *args): result=a*b forarginargs: result=result*arg returnresult在这个函数中,咱们通常定义前两个参数(a和b)。而后应用args将所有残余参数打包到一个元组中。能够把看作是获取到了其余没有解决的参数,并将它们收集到一个名为“args”的元组变量中: multiply(1, 2) # returns 2 multiply(1, 2, 3, 4) # returns 24最初一次调用将值1赋给参数a,将2赋给参数b,并将arg变量填充为(3,4)。因为这是一个元组,咱们能够在函数中循环它并应用这些值进行乘法! ...

March 9, 2023 · 3 min · jiezi

关于机器学习:机器学习K近邻算法

K近邻算法一、什么是k近邻算法给定一个训练数据集、对新的输出实例,在训练集中找到与该实例最邻近的k个实例,这k个实例的少数属于某个类,就把该输出实例分为这个类。如下图所示:输出新的❓点判断它属于classA还是classB 那么问题来了k近邻算法市最近邻,那么这个最近邻怎么判断?计算间隔!怎么计算间隔 二、间隔度量1、欧几里得间隔$$d(x,y)=\sqrt{\displaystyle\sum_{i=1}^{n}(y_i-x_i)^2}$$ 3、曼哈顿间隔$$d(x,y)=(\displaystyle\sum_{i=0}^{n}{|y_i-x_i|})$$ 4、闵可夫斯基间隔$$Minkowski Distance=(\displaystyle\sum_{i=0}^{n}{|y_i-x_i|})^\frac{1}{p}$$ 当初咱们晓得了如何确定间隔,然而问题又来了,咱们应该怎么去定义咱们的K值呢? 三、K值抉择如果抉择较小的 k 值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差(approximation error)会减小,只有与输出实例较近的(类似的)训练实例才会对预测后果起作用。但毛病是“学习”的预计误差(estimation error)会增大,预测后果会对近邻的实例点十分敏感 。如果邻近的实例点恰巧是噪声,预测就会出错。换句话说,k 值的减小就意味着整体模型变得复杂,容易产生过拟合。 如果抉择较大的 k 值,就相当于用较大邻域中的训练实例进行预测。其长处是能够缩小学习的预计误差,但毛病是学习的近似误差会增大。这时与输出实例较远的(不类似的)训练实例也会对预测起作用,使预测产生谬误。k 值的增大就意味着整体的模型变得简略。 如果k =N,那么无论输出实例是什么,都将简略地预测它属于在训练实例中最多的类。这时,模型过于简略,齐全疏忽训练实例中的大量有用信息,是不可取的。在利用中,k 值个别取一个比拟小的数值。通常采纳穿插验证法来选取最优的 k 值 参考1、https://www.ibm.com/cn-zh/topics/knn#:~:text=k%2D%E6%9C%80%E8...,%E6%9C%80%E5%B8%B8%E8%A1%A8%E7%A4%BA%E7%9A%84%E6%A0%87%E7%AD%BE%E3%80%822、李航《统计学学习办法第二版》

March 9, 2023 · 1 min · jiezi

关于机器学习:机器学习算法-Logistic-回归-详解

动动发财的小手,点个赞吧! 1. 导读逻辑回归是在因变量为二元时进行的回归剖析。它用于形容数据并解释一个因二元变量与一个或多个名义、有序、区间或比率程度变量之间的关系。二元或二项式 Logistic 回归能够了解为解决其中因变量的察看后果只能是二元的场景的 Logistic 回归类型,即它只能有两种可能的类型。多项 Logistic 回归实用于后果可能具备两种以上可能类型(A 型、B 型和 C 型)的状况,它们没有任何特定的程序。分类技术是机器学习和数据挖掘利用中的重要组成部分。解决分类问题的算法也有很多种,比方:k-近邻算法,应用间隔计算来实现分类;决策树,通过构建直观易懂的树来实现分类;奢侈贝叶斯,应用概率论构建分类器。这里咱们要讲的是Logistic回归,它是一种很常见的用来解决二元分类问题的回归办法,它次要是通过寻找最优参数来正确地分类原始数据。 1. Logistic Regression逻辑回归(Logistic Regression,简称LR),其实是一个很有误导性的概念,尽管它的名字中带有“回归”两个字,然而它最善于解决的却是分类问题。LR分类器实用于各项狭义上的分类工作,例如:评论信息的正负情感剖析(二分类)、用户点击率(二分类)、用户守约信息预测(二分类)、垃圾邮件检测(二分类)、疾病预测(二分类)、用户等级分类(多分类)等场景。咱们这里次要探讨的是二分类问题。 2. 线性回归逻辑回归和线性回归同属于狭义线性模型,逻辑回归就是用线性回归模型的预测值去拟合实在标签的的对数几率(一个事件的几率(odds)是指该事件产生的概率与不产生的概率之比,如果该事件产生的概率是P,那么该事件的几率是 对数几率就是 逻辑回归和线性回归实质上都是失去一条直线,不同的是,线性回归的直线是尽可能去拟合输出变量X的散布,使得训练集中所有样本点到直线的间隔最短;而逻辑回归的直线是尽可能去拟合决策边界,使得训练集样本中的样本点尽可能分来到。因而,两者的目标是不同的。 线性回归方程: 此处,y为因变量,x为自变量。在机器学习中y是标签,x是特色。 3. Sigmoid 函数在二分类的状况下,函数能输入0或1。领有这类性质的函数称为海维赛德阶跃函数(Heaviside step function),又称之为单位阶跃函数(如下图所示) 单位阶跃函数的问题在于:在0点地位该函数从0霎时跳跃到1,这个霎时跳跃过程很难解决(不好求导)。侥幸的是,Sigmoid函数也有相似的性质,且数学上更容易解决。 Sigmoid函数公式: import numpy as npimport mathimport matplotlib.pyplot as plt%matplotlib inlineX = np.linspace(-5,5,200)y = [1/(1+math.e**(-x)) for x in X]plt.plot(X,y)plt.show()X = np.linspace(-60,60,200)y = [1/(1+math.e**(-x)) for x in X]plt.plot(X,y)plt.show() 上图给出了Sigmoid函数在不同坐标尺度下的两条曲线。当x为0时,Sigmoid函数值为0.5。随着x的增大,对应的函数值将迫近于1;而随着x的减小,函数值迫近于0。所以Sigmoid函数值域为(0,1),注意这是开区间,它仅有限靠近0和1。如果横坐标刻度足够大,Sigmoid函数看起来就很像一个阶跃函数了。 4. 逻辑回归通过将线性模型和Sigmoid函数联合,咱们能够失去逻辑回归的公式: 这样y就是(0,1)的取值。对式子进行变换,可得: 这个其实就是一个对数几率公式。 二项Logistic回归: ...

March 8, 2023 · 2 min · jiezi

关于机器学习:FATE联邦学习standalone版Fateboard修改配置

背景&做法很多其余程序(比方vscode的code server)也会应用这个 127 0 0 1:8080 socket进行通信,这样就没方法近程用vscode去开发了,所以须要批改下Fateboard的socket配置。官网文档中也给出了如何批改配置 The default database for FATEBoard for cluster version is mysql. If you want to use standalone version, you should use sqlite databse. Just update the file : fateboard/src/main/resources/application.properties with right parameters of sqlite.他这个地位其实是以安装包为根目录的,所以你记得去哪里找。不过他这个地位如同不太对,我是在fateboard/conf/application.properties找到的……可能因为我的是standalone版本的,所以目录不一样。 为了确认是否是这个配置文件,我查看了官网安装包的bin/init.sh文件的确是这个,应用standalone的Fateboard配置文件在fateboard/conf/application.properties外面。吧外面的port轻易改个其余的就行了。 重新启动先进行 ps -ef|grep java|grep fateboard|grep -v grep|awk '{print $2}'# 返回一个pidkill -9 ${pid}再启动至于怎么启动,你能够依照官网文档用那一串尝尝的启动形式,或者用下图这个bash,这个在官网文档里没提到。间接cd到这里bash service.sh就行,其实外面也是那一串长长的命令。重新启动后,能够看到批改的port曾经失效了。

March 8, 2023 · 1 min · jiezi

关于机器学习:结合基于规则和机器学习的方法构建强大的混合系统

通过这些年的倒退,咱们都确信ML即便不能体现得更好,至多也能够在简直所有中央与前ML时代的解决方案相匹配。比如说一些规定束缚,咱们都会想到是否把它们替换为基于树的ml模型。然而世界并不总是黑白分明的,尽管机器学习在解决问题上必定有本人的地位,但它并不总是最好的解决方案。基于规定的零碎甚至能够胜过机器学习,特地是在可解释性、健壮性和透明度至关重要的畛域。 在本文中,我将介绍一些理论的案例,以及如何将手动规定和ML联合使得咱们的计划变得更好。 基于规定的零碎基于规定的零碎是通过预约义规定来为决策提供反对,零碎依据存储的规定评估数据,并依据映射执行特定操作。 上面是几个例子: 欺诈检测:在欺诈检测中,基于规定的零碎可用于依据预约义规定疾速标记和考察可疑交易。 比如说国际象棋的作弊者,他们的的根本作法是在另一个窗口中装置计算机象棋应用程序,应用程序进行对弈,对于程序来说无论多简单,每一步都须要 4-5 秒能力实现。所以增加“阈值”来计算玩家每一步的工夫,如果在浮动不大就有可能被判断为是作弊者,如下图所示: 医疗保健行业:基于规定的零碎可用于治理处方和避免用药谬误。它们还能够十分有用地帮忙医生依据先前的后果为患者开出额定的剖析处方。 供应链治理:在供应链治理中,基于规定的零碎可用于生成低库存警报、帮忙治理到期日期或新产品推出。 基于机器学习的零碎机器学习 (ML) 零碎应用算法从数据中学习并做出预测或采取行动,且无需明确编程。机器学习零碎应用通过大量数据训练取得的常识来对新数据进行预测和决策。随着更多数据用于训练,ML 算法能够进步其性能。机器学习零碎包含自然语言解决、图像和语音辨认、预测剖析等。 欺诈检测:银行可能会应用机器学习零碎从过来的欺诈交易中学习并实时辨认潜在的欺诈流动。或者,它可能会对系统进行逆向工程并寻找看起来十分“异样”的交易。 医疗保健:医院可能会应用 ML 零碎来剖析患者数据,并依据某些 X 射线预测患者患某种疾病的可能性。 比照基于规定的零碎和ML零碎都有各自的长处和毛病 基于规定的零碎的长处很显著: 易于了解和解释疾速实现易于批改强壮的毛病: 波及大量变量的问题约束条件多的问题限于现有规定基于ml的零碎的长处也很显著 自主学习零碎解决更简单问题的能力与基于规定的零碎相比,缩小了人为干涉,进步了效率通过一直学习,灵便地适应数据和环境的变动毛病: 须要的数据,有时很多仅限于之前看到的数据ML认知能力无限通过比照咱们发现,这两种零碎的优缺点并不抵触,并且是互补的,那么有没有一种办法能够将他们的长处联合起来呢? 混合型零碎 混合系统,联合了基于规定的零碎和机器学习算法,最近变得越来越风行。它们能够提供更强壮、精确和无效的后果,特地是在解决简单问题时。 让咱们来看看能够应用租赁数据集实现的混合系统: 特色工程:将楼层转换为三个类别之一:高、中或低,具体取决于建筑物的楼层数。这样能够进步ML模型的效率 硬编码规定能够用作特色工程过程的一部分,以辨认和提取输出数据中的重要特色。例如,如果问题畛域清晰明确,规定能够很容易地而精确地定义,硬编码规定能够用来创立新特色或批改现有特色,以进步机器学习模型的性能。尽管硬编码规定和特色工程是两种不同的技术,但它们能够联合应用以进步机器学习模型的性能。硬编码规定能够用于创立新特色或批改现有特色,而特色工程能够用于提取不易通过硬编码规定捕捉的特色。 后处理:四舍五入或归一化最终后果。 硬编码规定能够作为后处理阶段的一部分来批改机器学习模型的输入。例如,如果机器学习模型输入一组预测后果与某些已知规定或约束条件不统一,硬编码规定能够用来批改预测后果,使其合乎规定或约束条件。比方过滤或平滑等后处理技术能够通过打消噪声或谬误,或进步预测的整体准确性来精密机器学习模型的输入。当机器学习模型输入概率预测或输出数据存在不确定性时,这些技术尤其无效。在某些状况下,后处理技术也能够用于应用额定信息加强输出数据。例如,如果机器学习模型是在无限数据集上训练的,后处理技术能够用来从内部起源(如社交媒体或新闻提要)中提取额定的特色,以进步预测的准确性。 案例医疗保健 让咱们来看看心脏病的数据: 如果咱们用随机森林来预测指标类: clf=RandomForestClassifier(n_estimators=100, random_state=random_seed X_train, X_test, y_train, y_test=train_test_split( df.iloc[:, :-1], df.iloc[:, -1], test_size=0.30, random_state=random_seed ) clf.fit(X_train, y_train))这里抉择随机森林的起因之一是它的构建特色重要性能力。上面能够看到用于训练的特色的重要性: 看看后果: y_pred=pd.Series(clf.predict(X_test), index=y_test.index cm=confusion_matrix(y_test, y_pred, labels=clf.classes_) conf_matrix=ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=clf.classes_) conf_matrix.plot()) f1_score(y_test, y_pred): 0.74 recall_score(y_test, y_pred): 0.747这时一位心脏病专家看到了你的模型。基于他的教训和畛域常识,他认为地中海贫血特色(thal)比下面所示的要重要得多。所以咱们决定建设一个直方图并查看后果。 ...

March 7, 2023 · 1 min · jiezi

关于机器学习:DetectGPT使用概率曲率的零样本机器生成文本检测

DetectGPT的目标是确定一段文本是否由特定的llm生成,例如GPT-3。为了对段落 x 进行分类,DetectGPT 首先应用通用的预训练模型(例如 T5)对段落 ~xi 生成较小的扰动。而后DetectGPT将原始样本x的对数概率与每个扰动样本~xi进行比拟。如果均匀对数比高,则样本可能来自源模型。 ChatGPT是一个热门话题。人们正在探讨是否能够检测到一篇文章是由大型语言模型(LLM)生成的。DetectGPT定义了一种新的基于曲率的准则,用于判断是否从给定的LLM生成。DetectGPT不须要训练独自的分类器,不须要收集实在或生成的段落的数据集,也不须要显式地为生成的文本加水印。它只应用由感兴趣的模型计算的对数概率和来自另一个通用预训练语言模型(例如T5)的文章随机扰动。 1、DetectGPT:随机排列和假如 辨认并利用了机器生成的通道x~p(左)位于logp (x)的负曲率区域的趋势,其中左近的样本均匀具备较低的模型对数概率。相比之下,人类书写的文本x~preal(.)(右)偏向于不占据具备显著负对数概率曲率的区域。 DetectGPT基于一个假如,即来自源模型p的样本通常位于p对数概率函数的负曲率区域,这是人类文本不同的。如果咱们对一段文本 x~p 利用小的扰动,产生 ~x,与人类编写的文本相比,机器生成的样本的数量 log p(x) - log p(~x) 应该绝对较大。利用这个假如,首先思考一个扰动函数 q(.|x),它给出了在 ~x 上的散布,x 的稍微批改版本具备类似的含意(通常思考粗略的段落长度文本 x)。例如,q(.|x) 可能是简略地要求人类重写 x 的其中一个句子的后果,同时保留 x 的含意。应用扰动函数的概念,能够定义扰动差别 d (x; p, q): 因而,上面的假如 4.1也就是: 如果q(.|x)是来自掩码填充模型(如T5)的样本而不是人类重写,那么假如4.1能够以主动的、可扩大的形式进行教训测验。 2、DetectGPT:自动测试 对一篇文章进行改写后,模型生成的文章的对数概率(扰动差别)的均匀降落始终高于人工书写的文章 对于实在数据,应用了XSum数据集中的500篇新闻文章。当提醒XSum中每篇文章的前30个令牌时,应用四个不同llm的输入。应用T5-3B施加扰动,遮蔽随机采样的2个单词跨度,直到文章中15%的单词被覆盖。下面公式(1)中的冀望近似于T5中的100个样本。 上述试验结果表明,人写文章和模型样本的摄动差别散布有显著差别;模型样本往往有较大的扰动差别。依据这些后果,就能够通过简略地阈值扰动差别来检测一段文本是否由模型p生成。 通过用于预计 E~x q(.|x) log p (~x) 的观测值的标准偏差对扰动差别进行归一化提供了更好的检测,通常将 AUROC 减少 0.020 左右, 所以在试验中应用了扰动差别的归一化版本。 DetectGPT 的检测过程伪代码 扰动差别可能是有用的,它测量的是什么还无奈明确解释,所以作者在下一节中应用曲率进行解释。 3、将微扰差别解释为曲率扰动差别近似于候选段落左近对数概率函数部分曲率的度量,更具体地说,它与对数概率函数的 Hessian 矩阵的负迹成正比。 这一节内容比拟多,这里就不具体解释了,有趣味的能够看看原论文,大略总结如下: 语义空间中的采样确保所有样本都放弃在数据流形左近,因为如果随机增加扰动标记,预计对数概率总是降落。所以能够将指标解释为近似限度在数据流形上的曲率。 4、后果展现零样本机器生成文本检测 每个试验应用150到500个例子进行评估。机器生成的文本是通过提醒实在文本的前30个标记来生成的。应用AUROC)评估性能。 ...

March 6, 2023 · 1 min · jiezi

关于机器学习:FATE联邦学习的文档集合-collections-of-FATE-framework-documentations

其实有点不不便,文档乱乱的,各处都有我这里做个汇合吧,其实都是官网做的。。。 这个应该是专门给国内的https://docs.qq.com/doc/DU3ZQb1h1ZnZqTUFy这个是国内文档https://fate.readthedocs.io/en/latest/zh/federatedml_componen... 因为FATE是微众银行的开源,所以益处是有国内的社交平台分割号,其官方网站,能够加。 网站也给了哔哩哔哩的官网账号,账号外面有很多教程资源,都是中文的。

March 6, 2023 · 1 min · jiezi

关于机器学习:带加权的贝叶斯自举法-Weighted-Bayesian-Bootstrap

在去年的文章中咱们介绍过Bayesian Bootstrap,明天咱们来说说Weighted Bayesian Bootstrap Bayesian bootstrap贝叶斯自举法(Bayesian bootstrap)是一种统计学办法,用于在不足先验常识的状况下对一个参数的散布进行预计。这种办法是基于贝叶斯统计学的思维,它应用贝叶斯公式来计算参数的后验散布。 在传统的非参数自举办法中,样本是从一个已知散布中抽取的,而后应用这些样本来预计这个散布的性质。然而,在理论问题中,咱们通常无奈取得这样的先验常识,因而须要应用其余办法来预计散布。 贝叶斯自举法是一种代替办法,它不须要先验常识,而是从样本中抽取子样本,而后应用这些子样本来构建一个后验散布。这个后验散布示意了给定这个样本,参数的可能取值。通过在这个散布上采样,能够产生相似于非参数自举的样本,而后能够应用这些样本来预计参数的性质。 与传统的自举办法相比,贝叶斯自举法能够提供更好的参数估计,特地是在样本较小或参数散布简单的状况下。 Python实现应用numpy和scipy,咱们能够很容易实现Bayesian bootstrap importnumpyasnp importscipy.statsasss classBayesianBootstrap: def__init__(self, concentration: float=1.): self.n_draws=100000 self.bins=100 self.concentration=concentration defsample(self, obs: np.ndarray, weights: np.ndarray=None): # If no weights passed, use uniform Dirichlet ifweightsisNone: weights=np.ones(len(obs)) # Normalize weights to mean concentration weights=weights/weights.mean() *self.concentration # Sample posteriors draws=ss.dirichlet(weights).rvs(self.n_draws) means= (draws*obs).sum(axis=1) vars=draws* (obs-means.reshape(self.n_draws, 1)) **2 returnmeans, np.sqrt(vars.sum(axis=1)) defdistribution(self, obs: np.ndarray, weights: np.ndarray=None): # Sample and create distribution objects means, stds=self.sample(obs, weights) hist_mean=np.histogram(means, bins=self.bins) hist_std=np.histogram(stds, bins=self.bins) returnss.rv_histogram(hist_mean), ss.rv_histogram(hist_std).sample()办法是这里的外围,该办法计算来自察看的后验样本的平均值和标准偏差。与经典的自举法相比即便对于十分大量的样本,因为应用了向量化的计算,所以不用放心速度问题。distribution()函数是从样本直方图中返回scipy散布对象,这样咱们能够应用规范的API来计算任何后验统计信息。 ...

March 5, 2023 · 1 min · jiezi

关于机器学习:OpenAI又放大招ChatGPT对外开放API接口

3月2日晚上,OpenAI再官网公布音讯称,它将容许第三方开发者通过 API 将 ChatGPT 集成到应用程序和服务中,并且比应用现有的语言模型便宜得多。 此外,该公司还示意凋谢 Whisper 的 API,这是一种由人工智能驱动的语音转文本模型,并对其开发人员服务条款进行了一些重要更改。 同时,OpenAI 官网示意,曾经有好几家公司应用 ChatGPT API 来开发聊天利用,这包含本周早些时候发表的 Snap 的 My AI 性能以及微软之前为 Bing 推出的聊天性能。 不过,须要阐明的是,OpenAI 凋谢的这个模型可能不是 Bing 目前应用的那个,因为微软将其称之为“新的下一代 OpenAI 大型语言模型”,它比 ChatGPT 和 GPT-3.5“更快、更精确、更弱小”。 当然,思考到微软曾经在 OpenAI 上投入了大量资金,它可能取得超过一般开发者权限的技术也就难能可贵了,而且微软也在 Bing 上应用了自家的人工智能技术。 当然,OpenAI也在不断改进公开的ChatGPT模型,并且开发人员还能够本人地抉择特定gpt的版本。在不久的将来,OpenAI还将在 4 月公布更加稳固的gpt-3.5-turbo版本。 在之前的版本中,咱们要想应用OpenAI,可能须要本人搭建服务,而后在服务中引入OpenAi。不过,当初随着OpenAI对外开放API接口,咱们能够间接应用这些性能,在之前的版本如何应用,大家能够参考:基于OpenAI API构建图片生成器。 上面,咱们就解说下如何应用OpenAI凋谢的API来进行利用开发。首先,咱们应用https://api.openai.com/v1/chat/completions接口进行一个模仿申请,如下图。 波及的申请内容如下: curl https://api.openai.com/v1/chat/completions-H "Authorization: Bearer $OPENAI_API KEY"-H "Content-Type: application/json"- d '{"model": "gpt-3.5-turbo""messages": [{"role": "user", "content": "What is the OpenAI mission?"}]}‘如果没有谬误,返回的申请后果如下: { "id": "chatcmpl-6puoa1HmkGveS4m9G7S3DYg7HLv9w", "object": "chat.completion", "created": 1677831144, "model": "gpt-3.5-turbo-0301", "usage": { "prompt_tokens": 14, "completion_tokens": 98, "total_tokens": 112 }, "choices": [ { "message": { "role": "assistant", "content": "\n\nAs a language model AI, I don't have my own mission - but as an entity, OpenAI's mission is to develop and advance artificial intelligence in a safe and beneficial manner, for the betterment of humanity. They aim to create cutting-edge AI technologies and develop solutions to some of the world's most pressing problems, while prioritizing ethics and safety. They also seek to share their research and findings with the wider scientific community, encouraging collaboration and the open exchange of ideas." }, "finish_reason": "stop", "index": 0 } ]}上面是我应用node-fetch框架实现接口申请的示例: ...

March 3, 2023 · 2 min · jiezi

关于机器学习:昇思MindSpore报错调试宝典三网络构建与训练类报错之语法问题

欢送返回MindSpore论坛进行该文章的浏览:https://www.hiascend.com/forum/thread-0232113194535560002-1-1...上一期解说了网络构建与训练类报错问题中context配置问题该如何定位解决,置信大家对网络构建与训练类的报错问题剖析流程有所理解,那么本期咱们看看网络构建与训练问题中的语法问题,它通常包含Python语法错误和MindSpore动态图语法错误,例如控制流语法不反对、Tensor切片谬误等。那应该如何进行解决呢,本期以超出函数调用栈限度问题为例来解说下定位解决的办法。 间接进入主题,请看具体案例~ 昇思MindSpore报错案例总结【MindSpore报错解决地图】常见报错问题和解决方案:https://www.hiascend.com/forum/thread-0229108045633055169-1-1... 往期内容:昇思MindSpore报错调试宝典(一):数据加载与解决类MindSpore报错调试宝典(二):网络构建与训练类报错之context配置问题

March 3, 2023 · 1 min · jiezi

关于机器学习:机器学习-可视化反卷积操作

转置卷积操作的具体合成 1. 简介转置卷积是用于生成图像的,只管它们曾经存在了一段时间,并且失去了很好的解释——我依然很难了解它们到底是如何实现工作的。我分享的文章形容了一个简略的试验来阐明这个过程。我还介绍了一些有助于进步网络性能的技巧。 本文次要内容: 反卷积操作的整体可视化通过拆散更重要的组件来优化网络解决合成数据集问题插图的工作是我能想到的最简略的工作:为合成数据构建一个主动编码器。它是合成的这一事实可能会引发一些问题。确实,在此类数据上训练的模型在实在数据上可能体现不佳。然而咱们稍后会看到为什么会这样以及如何解决它。该模型由一个用于编码器的卷积层和一个用于解码器的反卷积(也称为卷积转置)组成。 2. 数据集数据是一组一维贝塞尔曲线,如下所示: 这是生成数据的代码:import numpy as npfrom tqdm import tqdmimport matplotlib.pyplot as pltDATASIZE = 1024 * 16WINSIZE = 15np.random.seed(22)# A Wikipedia page on Bezier curves contains a thorough explanation on# the topic, as well as mathematical formulas.# A 3-rd order curve is used here, so it is built on 4 pointsdef get_curve_points(param1, param2, n): # The four characteristic points depend on two parameters p1 = {'x': 0, 'y': 0} p2 = {'x': 0.5, 'y': param1} p4 = {'x': 1, 'y': 0} p3 = {'x': 0.5, 'y': param2} xs = np.zeros(n) ys = np.zeros(n) # Calculating the curve points by the formula from Wikipedia for i, t in enumerate(np.linspace(0, 1, n)): xs[i] = (1-t)**3 * p1['x'] + 3*(1-t)**2*t * p2['x']\ + 3*(1-t)*t**2 * p3['x'] + t**3 * p4['x'] ys[i] = (1-t)**3 * p1['y'] + 3*(1-t)**2*t * p2['y']\ + 3*(1-t)*t**2 * p3['y'] + t**3 * p4['y'] xs = np.array(xs) ys = np.array(ys) return xs, ysdef generate_input(p1, p2): xs, ys = get_curve_points(p1, p2, WINSIZE * 10) # The function above generates the curve as a set # of X and Y coordinates. The code below resamples them # into a set of Y coordinates only. # The function above does generate 10 times more points # than we would need, to make it dense enough for the resampling. result = [] for x in np.linspace(0, 1, WINSIZE): result.append(ys[np.argmin((xs - x)**2)]) return np.array(result)if __name__ == '__main__': data = [] for i in tqdm(range(DATASIZE)): # Generate two random parameters for each data item p1 = np.random.uniform() * 2 - 1 p2 = np.random.uniform() * 2 - 1 ys = generate_input(p1, p2) data.append(ys) # Plot the first 9 samples in 3x3 window if i < 3*3: plt.subplot(3, 3, i+1) plt.plot(ys) plt.gcf().set_size_inches(8, 5) plt.show() data = np.array(data) np.save('data.npy', data)这些曲线每条蕴含 15 个点。每条曲线将作为一维数组馈入网络(而不是为每个点传递 [x, y] 坐标,仅传递 [y])。 ...

March 2, 2023 · 5 min · jiezi

关于机器学习:XGBoost和LightGBM时间序列预测对比

XGBoost和LightGBM都是目前十分风行的基于决策树的机器学习模型,它们都有着高效的性能体现,然而在某些状况下,它们也有着不同的特点。 XGBoost和LightGBM简略比照训练速度 LightGBM相较于xgboost在训练速度方面有显著的劣势。这是因为LightGBM应用了一些高效的算法和数据结构,比方直方图算法和基于梯度单边采样算法(GOSS),这些算法使得LightGBM在训练大规模数据集时速度更快。 内存耗费 因为LightGBM应用了一些高效的算法和数据结构,因而其内存耗费绝对较小。而xgboost在解决大规模数据集时可能会须要较大的内存。 鲁棒性 xgboost在解决一些不规则数据时更加鲁棒,比方一些缺失值和异样值。而LightGBM在这方面绝对较弱。 精度 在雷同的数据集和参数设置下,两个模型的精度大抵相当。不过在某些状况下,xgboost可能体现得更好,比方在特色数较少的状况下,或者是须要更加平滑的决策树时。 参数设置 xgboost的参数比拟多,须要依据理论状况进行调整。而LightGBM的参数绝对较少,大多数状况下应用默认参数即可。 XGBoost和 LightGBM 算法比照XGBoost和 LightGBM 都是基于决策树的梯度晋升框架,它们的核心思想都是通过组合多个弱学习器来晋升模型的预测能力。它们在实现上有很多相似之处,但在算法方面有一些显著的不同: 决裂点抉择办法 在构建决策树时,xgboost 采纳的是一种贪婪算法,称为 Exact Greedy Algorithm,它会枚举每一个特色的每一个取值作为决裂点,而后计算对应的增益值,选取最大增益的决裂点作为最终的决裂点。 而 LightGBM 应用的是一种基于梯度单边采样(Gradient-based One-Side Sampling,GOSS)和直方图算法的决裂点抉择办法,它会先对数据进行预排序,而后将数据划分成若干个直方图,每个直方图蕴含多个数据点。在寻找最优决裂点时,LightGBM 只会在直方图中选取一个代表点(即直方图中的最大梯度值)进行计算,这样大大降低了计算量。 特色并行处理 xgboost 将数据按特色进行划分,而后将每个特色调配到不同的节点上进行计算。这种办法能够无效进步训练速度,但须要额定的通信和同步开销。 LightGBM 将数据按行进行划分,而后将每个分块调配到不同的节点上进行计算。这种办法防止了通信和同步开销,但须要额定的内存空间。 解决缺失值 xgboost 会主动将缺失值调配到左右子树中概率更高的那一边。这种办法可能会引入一些偏差,但对于解决缺失值较多的数据集比拟无效。 LightGBM 则采纳的办法称为 Zero As Missing(ZAM),它将所有的缺失值都视为一个非凡的取值,并将其纳入其中一个子节点中。这种办法能够防止偏差,但须要更多的内存空间。 训练速度 LightGBM 在训练速度方面具备显著劣势,这是因为它应用了 GOSS 和直方图算法,缩小了计算量和内存耗费。而 xgboost 的计算速度绝对较慢,然而在解决较小的数据集时体现良好。 电力能源消耗预测在当今世界,能源是次要的探讨点之一,可能精确预测能源生产需要是任何电力公司的要害,所以咱们这里以能源预测为例,对这两个目前最好的表格类数据的模型做一个比照。 咱们应用的是伦敦能源数据集,其中蕴含2011年11月至2014年2月期间英国伦敦市5567个随机抉择的家庭的能源消耗。咱们将这个集与伦敦天气数据集联合起来,作为辅助数据来进步模型的性能。 1、预处理 在每个我的项目中,咱们要做的第一件事就是很好地了解数据,并在须要时对其进行预处理: import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("london_energy.csv") print(df.isna().sum()) df.head()“LCLid”是标识每个家庭的惟一字符串,“Date”就是咱们的工夫索引,“KWH”是在该日期破费的总千瓦时数,没有任何缺失值。因为咱们想要以个别形式而不是以家庭为单位来预测耗电量,所以咱们须要将后果按日期分组并均匀千瓦时。 df_avg_consumption = df.groupby("Date")["KWH"].mean() df_avg_consumption = pd.DataFrame({"date": df_avg_consumption.index.tolist(), "consumption": df_avg_consumption.values.tolist()}) df_avg_consumption["date"] = pd.to_datetime(df_avg_consumption["date"]) print(f"From: {df_avg_consumption['date'].min()}") print(f"To: {df_avg_consumption['date'].max()}")咱们来做一个折线图: ...

March 2, 2023 · 3 min · jiezi

关于机器学习:Chai3D之相机视角

举荐:将 NSDT场景编辑器 退出你的3D开发工具链 相机介绍相机是 3D 可视化中的次要查看工具。它们被搁置在世界上并以独特的形式命名。场景中能够存在多个摄像机,每个摄像机都连贯到独自的视口(窗口)以向用户显示场景。相机能够查看固定指标,追随门路,或间接由触觉设施管制(例如模仿内窥镜)。本章探讨应用摄像机并将其连贯到窗口显示或视口的根本过程。世界内的摄像机指向场景。近剪裁立体和远剪裁立体定义摄像机渲染的区域。 透视和正交相机在上面的示例中,咱们在世界中创立并插入一个虚构摄像机。摄像机的地位、所需的指标点以及定义“向上”地位的矢量用于直观地定位和定向摄像机在场景中。也能够通过间接调整部分位置矢量和部分旋转矩阵来管制相机。请留神,相机也能够成为对象或触觉工具的子项。近和远 剪裁立体用于定义渲染对象的流动体积。位于剪裁立体之外的对象将被疏忽,因而不会渲染到显示视口。每个裁剪立体的地位都是在场景的以后单位中沿摄像机的眼帘测量的。确保“近”和“远”修剪立体都设置正确,并且以提供足够的深度缓冲区精度的形式设置十分重要。 using namespace chai3d;// define a camera positioncVector3d position(1.0, 0.0, 0.5);// define a target positioncVector3d lookat(0.0, 0.0, 0.2);// define the orientation of the camera by a vector pointing upwardcVector3d up(0.0, 0.0, 1.0);// position and orient the cameracamera->set(position, lookat, up);// set the near and far clipping planes of the camera.camera->setClippingPlanes(0.01, 10.0);透视图和正交视图正交投影或平行投影由不波及透视校对的投影组成。在这些投影中,不会调整与摄像机的间隔,这意味着屏幕上的对象无论间隔多近,都会显示雷同的大小。在 CHAI3D 中,正交视图是通过将要显示的环境的物理宽度调配给视口来定义的。 // set orthographic view by defining image width (2.0 meters for instance)camera->setOrthographicView(2.0); 只管正交投影可能很乏味,但透视投影会创立更真切的场景,因而这是您最常应用的场景。在透视投影中,当对象离观看者越来越远时,它在屏幕上会显得更小,这种成果通常称为透视缩短。 ...

March 2, 2023 · 1 min · jiezi

关于机器学习:297个机器学习彩图知识点15

导读本系列将继续更新20个机器学习的知识点,欢送关注。1. 函数 2. 高斯奢侈贝叶斯分类器 3. 泛化能力 4. 基尼指数 5. Grabcut算法 6. 梯度悬崖 7. 梯度裁剪 8. 梯度降落 本文由mdnice多平台公布

March 1, 2023 · 1 min · jiezi

关于机器学习:INFO911数据挖掘与知识发现

Data Mining and Knowledge Discovery Autumn Session 2022Wollongong, South Western SydneyOn Campus UOW may need to change teaching locations and/or teaching delivery at shortnotice to ensure the safety and well-being of students and staff in response to theCOVID-19 pandemic or other public health requirements. Credit Points: 6Pre-requisites: NilCo-requisites: NilEquivalences (ornot to countwith):INFO411 2 | INFO911 SUBJECT OUTLINE AUTUMN SESSION 2022The original material prepared for this guide is covered by copyright. Apart from fair dealing for the purposes of private study,research, criticism or review, as permitted under the Copyright Act 1968 (Cth), no part may be reproduced by any processwithout written permission.4 | INFO911 SUBJECT OUTLINE AUTUMN SESSION 2022 ...

March 1, 2023 · 9 min · jiezi

关于机器学习:FATE联邦学习-centos成功安装启动

官网文档:https://fate.readthedocs.io/e...。 我用的文档中的Standalone的第二种装置形式,没用docker。 装置过程文档上写着确定版本 export version=1.7.0然而你别真的用1.7.0啊! ,1.7.0曾经是很老的版本了……不然巨坑(我曾经亲身经历过了,悲)。首先要查一查当初比拟新的版本是什么,目前2023年2月我查到的比拟新的是1.10.0。所以我 export version=1.10.0取得安装包,解压 wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/${version}/release/standalone_fate_install_${version}_release.tar.gz;tar -xzvf standalone_fate_install_${version}_release.tar.gz而后init一下,装置。 cd standalone_fate_install_${version}_release;bash bin/init.sh init装置后呈现 然而我这里除了这个,还有一些fail的工作,临时不论他。 而后查看下 bash bin/init.sh status输入一些config和运行状态,看到的确没有启动。 而后启动 bash bin/init.sh start会通过许多许多的check process by http port and grpt port最初输入的service start successfully。然而他可能在后面先输入failed,前面还会输入success……检查一下吧,我是没有呈现fail 而后执行官网文档的testing flow test toy -gid 10000 -hid 10000如果不胜利,会返回 { "retcode": 100, "retmsg": "Connection refused, Please check if the fate flow service is started"}或者torch呈现谬误或者其余python包或者库呈现谬误。我本人是呈现了module ‘lib‘ has no attribute ‘OpenSSL_add_all_algorithms‘,是因为cryptography包太新了,降一上级,我参考了这个,胜利运行了toy test胜利后会返回这样 这样FATE框架就启动起来了。 下一篇再分享一下应用Python进行框架的开发。

February 28, 2023 · 1 min · jiezi

关于机器学习:297个机器学习彩图知识点14

导读本系列将继续更新20个机器学习的知识点,欢送关注。1. 独立同散布 2. KNN填补缺失值 3. 填补缺失值 4. 拐点 5. 参数初始化 6. 初始权重 7. 工具变量 8. 穿插项 9. 线性插值 10. 四分位差 11. 普拉托变换 12. 雅可比矩阵 13. JOINS 14. K折穿插验证 15. K-means 16. KNN算法 17. KNN算法技巧 18. K近邻的K大小 19. Fowlkes-mallows 20. F-范数 本文由mdnice多平台公布

February 26, 2023 · 1 min · jiezi

关于机器学习:297个机器学习彩图知识点13

导读本系列将继续更新20个机器学习的知识点,欢送关注。1. 阈值类别特色的方差 2. 切分文本 3. 畛域链接 4. TSS 5. 误差 6. 训练错误率 7. 真正类率 8. 抛弃概率 9. 数值下溢 10. 弱学习器 11. 权重衰减 12. 缺失值 13. N 14. 损失函数 15. 自然语言训练模型 16. 异或函数 17. 约登指数 18. 0损失 19. 超平面 20. 假如空间 本文由mdnice多平台公布

February 24, 2023 · 1 min · jiezi

关于机器学习:FIT5145-描述

FIT5145 Assignment 1: DescriptionDue date: Sunday 26th April 2020 - 11:55pmThe aim of this assignment is to investigate and visualise data using various data science tools. It will testyour ability to: read data files in Python and extract related data from those files;wrangle and process data into the required formats;use various graphical and non-graphical tools to performing exploratory data analysis andvisualisation;use basic tools for managing and processing big data; andcommunicate your findings in your report.You will need to submit two separate files (Note: Submitting a zipped file will attract penalty of 10%):A report in PDF containing your answers to all the questions. Note that you can use Word or otherword processing software to format your submission. Just save the final copy to a PDF beforesubmitting. Make sure to include code, the output and any screenshots/images of the graphsyou generate in order to justify your answers to all the questions. (Marks will be assigned to reportsbased on their correctness and clarity. -- For example, higher marks will be given to reportscontaining graphs with appropriately labelled axes.)The Python code is a Jupyter notebook file (idnumber_FIT5145_A1.ipynb) that you wrote toanalyse and plot the data. (Note that the entire assignment should be completed using python)Assignment Tasks:The way we supply and use energy in Australia is changing. To understand these changes, to plan forAustralia’s energy future, and to make sound policy and investment decisions, we need timely, accurate,comprehensive and readily-accessible energy data. The Department of Industry, Science, Energy andResources is responsible for compiling and publishing Australia’s official energy statistics and balances1.The is updated annually and consists of historical energy consumption, production and trade statistics.In this task, you are required to explore the statistics covering all electricity generation in Australia. Thisincludes by power plants, and by businesses and households for their own use, in all states and territories.This also includes both on and off grid generation. We have extracted the data from the original files andrestricted it to a specific time period. Please download the dataset for this assignment from the followinglink:https://lms.monash.edu/mod/fo... ➤ energy_data.xlsxhttps://www.energy.gov.au/gov...2The Data FileThe data file you have downloaded is in xlsx format. Each sheet contains the energy generationstatistics of each Australian State/Territory in GWh (Gigawatt hours) for the year 2009 to 2018.Field description● State: Names of different Australian states.● Fuel_Type: The type of fuel which was used.● Category: Classification of fuel type: renewable or non-renewable.● Years: Year which the energy generation are recorded.There are two tasks (Task A and B) that you need to complete for this assignment. You need to usePython v3.5+ to complete the tasks.Task A: Exploratory Data Analysis of the Energy DatasetThis assessment aims to guide you in exploring the Australian Energy generation data set through theprocess of exploratory data analysis (EDA), primarily through visualisation of that data using variousdata science tools. You will need to draw on what you have learnt and will continue to learn, in class.You are also encouraged to seek out alternative information from reputable sources. If you use or are’inspired’ by any source code from one of these sources, you must reference this.A1. Investigating the Energy Generation data for VictoriaFirst, read the data for Victoria state into a dataframe. You will observe that some values for thefuel types (eg. Black coal etc.) are missing or have ‘Nan’. To handle it, replace these values withzero (using appropriate python code) before proceeding with the rest of the questions.a. Using Python, plot the total energy generation in Victoria over the time period covered inthe dataset (2009 to 2018). Describe the trend you see in the overall energy generation forthe given time period.b. Draw a new plot showing the trend in total renewable and non-renewable energygeneration for the same time period? What trend can you observe from this graph?c. Draw a bar chart showing the breakdown of the different fuel types used for energygeneration in 2009 vs in 2018? Explain your observation.d. What was the most used energy resource (fuel-type) in 2015? Which renewable fuel typewas the least used in 2015?e. Draw a plot showing the percentage of Victoria's energy generation coming fromRenewable vs Non-Renewable energy sources over the period 2009 to 2018. What canyou say about the trend you observe?f. Using a linear regression model, predict what percentage of Victoria’s energy generationwill come from Renewable energy sources in the year 2030, 2100? Do the predictionsseem reasonable?3A2. Investigating the Energy Generation data for Australia.Let’s do some further investigation by combining the data for all the states and territories inAustralia. Read the data for the rest of the states and merge them in a single dataframe. (Hint: youcan use a combination of merge, melt or concat operators to get your data in a format suitable foranswering the following questions)a. Plot a column chart showing the total energy generated in Australia by fuel type in the year2018.b. Which state had the highest energy production in 2018? What is the ratio (percentagebreakdown) of renewable vs non-renewable energy production for that state in 2018.c. Draw a plot showing the percentage of energy generation from renewable energy sourcesfor each state over the period 2009 to 2018. From your graph, which state do you think ismaking the most progress towards adopting green energy? Provide a reason for youranswer.A3. Visualising the Relationship over TimeNow let's look at the relationship between all variables impacting the energy generation over time. Ensurethat you have combined all the data from the different states. Ensure that your data is aggregated by year,state, the total energy produced (total_production), and has a separate column for each of the fuel types.Use Python to build a Motion Chart, that visualises the energy production trend for Australia overtime. The motion chart should show the units of energy production using Wind on the x-axis, theenergy production using Natural gas on the y-axis, the colour represents the states/territories thebubble size should show the total_production. (HINT: A Jupyter notebook containing a tutorialon building motion charts in Python is available here)Run the visualisation from start to end. (Hint: In Python, to speed up the animation, set the timerbar next to the play/pause button to the minimum value.) And then answer the following questions:a. Comment generally on the trend you see on reliance on wind energy vs reliance on naturalgas for each Australian state overtime. Is it logical to say if there is a relationship betweenthe two variables?b. Which state relied most on natural gas for energy production in 2013? Please support youranswer with any relevant python code and the motion chart screenshot.c. Comment on Queensland (QLD) states reliance trend on Natural gas between 2009 to2018? What could be the reason contributing to this?4Sample snapshot of the expected Motion Chart5Task B: Exploratory Analysis of DataIn this task, you are presented with some pre-processed tweets about bushfires in Australia. The datasetis available via the following link:https://lms.monash.edu/mod/fo... > twitter_data.csvPlease refer to Table 1 if you want to know the meaning of each feature/column. For example, nFollowsshows the number of followers a user has. A user which has more than a thousand followers can beconsidered as a popular user. It should be noted that NOT every tweet in the data set is relevant to thebushfires in Australia, as represented by the value in the last column (1 denotes relevant and 0 irrelevanttweet).Table 1: Description of Columns in the Data FileYou are required to investigate the features of the twitter dataset. Please clearly label and comment yourPython code used to answer each question.6B1. Investigating the DataPlease make sure to understand the data set and it’s variables properly before answering thefollowing questions. You need to have a good insight into the dataset to be able to understandsome of the questions properly and avoid confusion.How many tweets are there all together in the data file? How many of these tweets were postedfrom a verified account?Draw a histogram showing the distribution of #entities extracted from the tweets. Set anappropriate bin size to present this information.Compute the descriptive statistics (mean, std, quartile1, median, quartile3 and max ) of #entitiesof relevant (ie. relevanceJudge = 1) and non-relevant (ie. with relevanceJudge = 0) tweets in thedataset. (Hint: You may use the describe() function for simplicity). Explain any interesting findings.What is the average length of the tweets (in characters) that are judged as relevant? What is theaverage length of a non-relevant tweet?To gain further insights into the twitter age of the users, it would be better to group the twitterAgein categorical bins. Create a new column twitter age group in your dataframe based on twitterAgeby converting it into the following groupings or categories [‘0-1’,’1-2’,’2-3’,’3-4’, ‘4-5’, ‘5+’] (Hint:You can use the cut() method to bin (categorise) your data in these suggested categories)a. Generate boxplots summarising the distribution of each twitter age group against theirtweet length. What do you observe? Is there much variation in tweet length across the agegroups?b. Which age group has the lowest median tweet length and which one has the highest? Statethese median values.c. According to the current bushfire tweet dataset, which age group is more active on twitter(has posted most tweets - from the current processed set tweets in your dataframe)? (Note:Each record in the dataframe is a tweet).d. Create a plot showing the total number of tweets posted by each age group (from Part [c]above).e. Which age group on average has the highest number of followers on twitter?B2. Exploring correlation in the DataIn this task, you are required to explore the above (twitter) dataset and report on any interestingrelationship/correlations you discover amongst the tweet variables. Your analysis should form a logicalstory. The answer should contain visualisations (plots to represent the trend or correlation),interpretation of your findings and an example of a prediction task (using simple linear regression).[Note: There should be a clear reason behind each visualisation you create, followed by a conciseexplanation of what message the visualisation is conveying.]All the Best!!!

February 23, 2023 · 8 min · jiezi

关于机器学习:人类怎么管好以-ChatGPT-为代表的-AI

这个问题很有意思。 以后的 ChatGPT 模型并没有真正的意识,它只是依据训练数据和算法生成答复。在以后的技术水平下,人工智能不具备自我意识和自我决策的能力,也无奈脱离其事后设定的指标进行口头。 然而,随着人工智能技术的倒退,这种状况可能会发生变化。为了管好以 ChatGPT 为代表的人工智能让它们为人类更好的服务,咱们须要建设欠缺的监管机制。 这些机制可能包含: 人工智能钻研和开发的伦理准则和标准。这些准则和标准应该明确规定人工智能不能脱离其预设的指标口头,不能具备自我意识和自我决策的能力,也不能对人类构成威胁。确保人工智能不会脱离其预设的指标口头是人工智能平安的一个重要方面。为了实现这个指标,人类能够在以下方面做出致力: (1) 清晰的指标设定:在开发人工智能零碎之前,须要明确其指标和工作。这些指标应该被具体地定义和记录,以便可能评估零碎是否在运行时放弃了这些指标。 (2) 监测零碎行为:人工智能零碎应该受到监测和审核,以确保其行为合乎预期的指标。能够通过引入人工智能监控和审核零碎来实现这一点,对人工智能零碎进行实时监控和审核。 (3) 限度零碎行为:对于一些对人类有潜在危害的行为,能够将零碎的口头限度在肯定范畴内。例如,一些主动驾驶汽车的制造商在车辆被公布到公众市场之前,在其软件中增加了限度,以防止车辆执行可能危险的操作。 (4) 设计透明度:在设计人工智能零碎时,应该思考将零碎的设计透明度作为一个要害的指标。这能够通过应用可解释性的模型和算法,以及提供零碎行为的透明度,以帮忙人类监督和控制系统的行为。 (5) 引入对抗性测试:能够对人工智能零碎进行对抗性测试,以评估零碎的鲁棒性。对抗性测试是一种测试方法,能够评估系统对针对其行为的意外和无意的攻打的反馈能力。通过这种测试,能够帮忙辨认和打消可能导致系统不合乎预期行为的破绽和弱点。 对人工智能的监管和治理。政府和监管机构能够建设相干的法律和规章制度,对人工智能的开发、利用、应用、保护和监管进行治理,确保人工智能的行为合乎伦理准则和标准。对人工智能的审查和监测。人工智能零碎的设计、施行和应用过程中,须要对其进行审查和监测,及时发现和解决潜在的平安问题。 下列措施有助于及早检测出人工智能零碎中潜在的平安问题: (1) 平安审计:对人工智能零碎进行平安审计,查看代码中是否存在安全漏洞或者潜在的平安问题,及时修复破绽。 (2) 平安测试:对人工智能零碎进行平安测试,模仿各种攻打场景,查看零碎的平安性能。 (3) 数据隔离:对不同的数据进行隔离,确保敏感数据不会被非法获取。 (4) 访问控制:对人工智能零碎的拜访进行管制,限度只有受权的人员能力拜访零碎。 (5) 日志审计:对系统的操作进行日志审计,及时发现异常操作,对问题进行考察。 (6) 更新保护:定期对系统进行更新和保护,确保零碎的平安性能一直晋升。 增强人员培训:增强相干人员的平安培训,进步其安全意识和平安能力,以更好地防备和应答平安问题。促成人工智能技术和利用的透明化和公开化。人工智能的钻研和利用应该尽可能地公开通明,确保人们可能理解和了解人工智能零碎的设计、实现和利用过程。

February 23, 2023 · 1 min · jiezi

关于机器学习:ChatGPT-勘误-SAP-ABAP-里-clr3standardpersistence-的用途

首先看 ChatGPT 的答复: 这答案齐全不正确。 在 SAP ABAP 中,cl_r3standard_persistence 是一个用于治理 ABAP 数据库操作的类。它提供了一系列静态方法,用于执行与 ABAP 数据库相干的工作,如读取数据、保留数据、更新数据、删除数据等。 以下是 cl_r3standard_persistence 类中一些重要办法的阐明: GET_TABLE_CONTENTS: 该办法用于从指定的 ABAP 数据表中读取数据,并将数据存储在外部表中。GET_ROW: 该办法用于从指定的 ABAP 数据表中获取指定的数据行,并将数据存储在外部表中。INSERT_RECORD: 该办法用于向指定的 ABAP 数据表中插入新的数据行。UPDATE_RECORD: 该办法用于更新指定的 ABAP 数据表中的数据行。DELETE_RECORD: 该办法用于从指定的 ABAP 数据表中删除指定的数据行。DELETE_TABLE: 该办法用于从指定的 ABAP 数据表中删除所有数据行。cl_r3standard_persistence 类能够帮忙开发人员疾速和不便地执行与 ABAP 数据库相干的工作,从而进步开发效率。然而,因为该类间接操作数据库,因而须要审慎应用,以防止对系统的数据造成损坏。 据笔者推断,ChatGPT 做出这种谬误答复,很可能是受到类名称里 PERSISTENCE 即长久化的影响。 这个类的形容信息:Enhancement Persistence for Standard Tables,笔者用的最多的就是它提供的静态方法,即应用 obj_is_enhanceable 判断一个 ABAP 对象是否能够被加强。 上图第 14 行的 obj_is_enhanceable 办法,如果抛出异样 cx_enh_is_not_enhanceable,被 18 行的 catch 语句接管,而后将 CL_WB_ED_ENHANCEMENT_HANDLER 的 成员变量 m_is_enhanceable 设置为 abap_false. ...

February 23, 2023 · 1 min · jiezi

关于机器学习:EC-421经济理算法

Problem Set 1: OLS ReviewEC 421: Introduction to EconometricsDue before midnight on Sunday, 19 April 2020DUE Upload your answer on Canvas before midnight on Sunday, 19 April 2020.IMPORTANT You must submit two files: your typed responses/answers to the question (in a Word file or something similar)the R script you used to generate your answers. Each student must turn in her/his own answers.README! The data in this problem set come from the 2018 American Community Survey (ACS), which I downloadedfrom IPUMS. The last page has a table that describes each variable in the dataset(s).OBJECTIVE This problem set has three purposes: (1) reinforce the metrics topics we reviewed in class; (2) buildyour R toolset; (3) start building your intuition about causality within econometrics/regression.INTEGRITY If you are suspected of cheating, then you will receive a zero. We may report you to the dean.SetupQ01. Load your packages. You'll probably going to need/want tidyverse and here (among others).Q02. Now load the data. I saved the same dataset as two different formats:an .rds file: use a function that reads .rds files—for example, readRDS() or read_rds() (from thereadr package in the tidyverse .a .csv file: use a function that reads .csv files—for example, read.csv() or read_csv() (from thereadr package in the tidyverse .Q03. Check your dataset. How many observations and variables do you have? Hint: Try dim() , ncol() , nrow() .Getting to know your dataQ04. Plot a histogram of households' income (variable: hh_income ). Note: Household income is in tens ofthousands of dollars (so a value of 8 implies an income of $80,000.)Q05. What are the mean and median levels of household income? Based upon this answer and the previoushistogram, is household income (fairly) evenly distributed or is it more skewed? Explain your answer.Q06. Create a histogram of household income per capita—meaning the household's income divided by the numberof individuals in the household. Does dividing by the number of individuals in the household change yourunderstanding of the income distribution? Explain your answer.Q07. Run a regression that helps summarize the relationship between household income and household size.Interpret the results of the regression—the meaning of the coefficient(s). Comment on the coefficient's statisticalsignificance.Q08. Explain why you chose the specification you chose in the previous question.Was it linear, log-linear, log-log?What was the outcome variable?What was the explanatory variable?Why did you make these choices?Q09. Plot a histogram of the time households spend commuting each day (the variable time_commuting is theaverage commuting time for a household). Is the distribution of commute time more or less equitable thanincome? Explain./ 4Regression refresher: Varying the specificationQ10. Linear specification Regress average commute time ( time_commuting ) on household income ( hh_income ).Interpret the coefficient and comment on its statistical significance.Q11. Log-linear specification Regress the log of average commute time on household income. Interpret thecoefficient and comment on its statistical significance.Q12. Log-log specification Regress the log of average commute time on the log of household income. Interpret thecoefficient and comment on its statistical significance.Multiple linear regression and indicator variablesQ13. Regress average commute time on household income and the share of the individuals in the household whoare non-white ethnicities ( hh_share_nonwhite ). Interpret the intercept and coefficient and comment on theirstatistical significance. Also compare your results to Q10. Has anything changed?Q14. Regress average commute time on the indicator variable for whether a household moved in the last year( i_moved ). Interpret the intercept and coefficient and comment on their statistical significance.Q15. Add the share of the household that represents a non-white ethnicity ( hh_share_nonwhite ) to the regressionin Q14. Note: Your outcome variable is still average household commute time, but you should now have twoexplanatory variables. Interpret the intercept and coefficient and comment on their statistical significance.Q16. Did adding this second explanatory variable change the coefficient of the first variable at all? What does thattell you? Explain your answer.Q17. Now add the interaction between your two explanatory variables in Q16 and re-run the regreation. (Youshould have an intercept and three coefficients—the two variables plus their interaction.) Interpret the coefficienton the interaction and comment on its statistical significance.Q18. Did including the interaction change your understanding of the relationship between the variables? Explain.Q19. Regress the indicator for whether the household has a smartphone ( i_smartphone ) on the household'sincome ( hh_income ) and the share of the household's individuals who represent non-white ethnicities( hh_share_nonwhite ). Interpret the intercept and coefficients. Comment on their statistical significance.The bigger pictureQ20. In the last regression (Q19), should we be concerned about omitted-variable bias? Explain your answer andprovide an example of a potential omitted variable if you are concerned about omitted-variable bias.Q21. Is R-squared a good measure of model performance? Explain your answer.Q22. Define the term standard error.Q23. What does our assumption of exogeneity require?Q24. What does it mean for an estimator to be unbiased?Q25. What does it mean for an estimator to be more efficient than another estimator?/ 4Description of variables and namesVariable Descriptionfips County FIPS codehh_size Household size (number of people)hh_income Household total income in $10,000cost_housing Household's total reported cost of housingn_vehicles Household's number of vehicleshh_share_nonwhite Share of household members identifying as non-white ethnicitiesi_renter Binary indicator for whether any household members are rentersi_moved Binary indicator for whether a household member moved in prior 1 yeari_foodstamp Binary indicator for whether any household member participates in foodstampsi_smartphone Binary indicator for whether a household member owns a smartphonei_internet Binary indicator for whether the household has access to the internettime_commuting Average time spent commuting per day by each household member (minutes)In general, I've tried to stick with a naming convention. Variables that begin with i_ denote binary indicatoryvariables (taking on the value of 0 or 1). Variables that begin with n_ are numeric variables.

February 23, 2023 · 5 min · jiezi

关于机器学习:定位调试两手抓报错真的不可怕-MindSpore报错调试宝典二网络构建与训练类报错之context配置问题

上一期咱们解说了数据加载与解决类报错如何调试解决,明天给大家持续带来网络构建与训练类报错中的context配置问题,本期仍将以案例的模式开展,具体解说mindspore.set_context算子的应用办法以及配置办法,心愿大家在后续应用context算子过程中能够轻松解决相干的报错问题!同时也欢送大家多多留言,给咱们提提倡议!废话不多说,请看下图!图中援用 [1]:API文档【昇思MindSpore报错解决地图】常见报错问题和解决方案: https://www.hiascend.com/foru...往期内容: 昇思MindSpore报错调试宝典(一):数据加载与解决类

February 23, 2023 · 1 min · jiezi

关于机器学习:COMS32007201-学习情况

COMS3200/7201 Assignment 1Due: 20th April 2020, 20:00100 marks total (20% weight for the final grade (100%))Part A (20 marks total)Answer each of the following questions in the associated quiz on blackboard, following the specifiedinstructions. All questions will be automatically marked.A client requests a webpage from a remote server on a remote island via a slow satellite link above the earthin geostationary orbit. The goal of this exercise is to use the following information to calculate the time for therequest to be completed.The scenario is in no way intended to be realistic.There is a client (C), a server (V), and a DNS server (D). These are connected by three switches (S1, S2, andS3) and five transmission links (L1 to L5) where L2 is the satellite link. The following tables provide furtherinformation about the network (bps == bits per second, 1 kbps == 103 bps, 1 Mbps == 106 bps).Transmission LinksLink Name Connected to Connected to Transmission Rate Length Propagation SpeedL1 C S1 100Mbps 300m 2 × 108 m/sL2 S1 S2 5kbps 36,000km 3 × 108 m/sL3 S2 V 100Mbps 75m 2 × 108 m/sL4 S2 S3 100Mbps 3,000km 2 × 108 m/sL5 S3 D 100Mbps 600m 2 × 108 m/sSwitchesSwitch Links on Ports Processing DelayS1 L1, L2 1msS2 L2, L3, L4 1msS3 L4, L5 250µsThe basic network topology is as below:AssumptionsYou may make the following assumptions about the network:• The network is packet-switched• The network starts with no other packets in queues - only packets that are a part of this question• Each link is bidirectional and can concurrently handle bits travelling in opposite directions• All required records are stored in the DNS server• C, D, and V have no processing delays (while this is unrealistic, this simplifies calculations)• DNS packets and TCP SYN, ACK, FIN, SYN/ACK, and FIN/ACK packets are 100 bytes long, including allheaders, preamble, etc• HTTP GET and HTTP response packets are 1000 bytes long, including all headers, preamble, etcScenarioAt time t = 0, a program on the client (C), starts the process of retrieving a webpage from the server (V). Thefollowing events happen sequentially: ...

February 23, 2023 · 14 min · jiezi

关于机器学习:机器学习算法-AdaBoost-详解

1. 集成学习概述1.1. 定义集成学习(Ensemble learning)就是将若干个弱分类器通过肯定的策略组合之后产生一个强分类器。弱分类器(Weak Classifier)指的就是那些分类准确率只比随机猜想略好一点的分类器,而强分类器(Strong Classifier)的分类准确率会高很多。这里的"强"&"弱"是绝对的。某些书中也会把弱分类器称为“基分类器”。 目前集成学习算法的流派次要有两种: baggingboosting1.2. bagging装袋(bagging)又称自主汇集(bootstrap aggregating),是一种依据平均概率分布从数据集中反复抽样(有放回的)的技术。每个新数据集和原始数据集的大小相等。因为新数据集中的每个样本都是从原始数据集中有放回的随机抽样进去的,所以新数据集中可能有反复的值,而原始数据集中的某些样本可能基本就没呈现在新数据集中。 bagging办法的流程,如下图所示: 有放回的随机抽样:自主采样法(Bootstap sampling),也就是说对于m个样本的原始数据集,每次随机选取一个样本放入采样集,而后把这个样本从新放回原数据集中,而后再进行下一个样本的随机抽样,直到一个采样集中的数量达到m,这样一个采样集就构建好了,而后咱们能够反复这个过程,生成n个这样的采样集。也就是说,最初造成的采样集,每个采样集中的样本可能是反复的,也可能原数据集中的某些样本基本就没抽到,并且每个采样集中的样本分布可能都不一样。 依据有放回的随机抽样结构的n个采样集,咱们就能够对它们别离进行训练,失去n个弱分类器,而后根据每个弱分类器返回的后果,咱们能够采纳肯定的组合策略失去咱们最初须要的强分类器。 bagging办法的代表算法是随机森林,精确的来说,随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样根底上,又加上了特色的随机抉择,其根本思维没有脱离bagging的领域。 1.3. boostingboosting是一个迭代的过程,用来自适应地扭转训练样本的散布,使得弱分类器聚焦到那些很难分类的样本上。它的做法是给每一个训练样本赋予一个权重,在每一轮训练完结时主动地调整权重。 boosting办法的流程,如下图所示: boosting办法的代表算法有Adaboost、GBDT、XGBoost算法 1.4. 联合策略1.4.1. 平均法对于数值类的回归预测问题,通常应用的联合策略是平均法,也就是说,对于若干个弱学习器的输入进行均匀失去最终的预测输入。 假如咱们最终失去的n个弱分类器为 最简略的均匀是算术平均,也就是说最终预测是 如果每个弱分类器有一个权重w,则最终预测是 1.4.2. 投票法对于分类问题的预测,咱们通常应用的是投票法。假如咱们的预测类别是 对于任意一个预测样本x,咱们的n个弱学习器的预测后果别离是 最简略的投票法是绝对少数投票法,也就是咱们常说的多数遵从少数,也就是n个弱学习器的对样本x的预测后果中,数量最多的类别 为最终的分类类别。如果不止一个类别取得最高票,则随机抉择一个做最终类别。 略微简单的投票法是绝对多数投票法,也就是咱们常说的要票过半数。在绝对少数投票法的根底上,不光要求取得最高票,还要求票过半数。否则会回绝预测。 更加简单的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。 1.4.3. 学习法前两种办法都是对弱学习器的后果做均匀或者投票,绝对比较简单,然而可能学习误差较大,于是就有了学习法这种办法,对于学习法,代表办法是stacking,当应用stacking的联合策略时, 咱们不是对弱学习器的后果做简略的逻辑解决,而是再加上一层学习器,也就是说,咱们将训练集弱学习器的学习结果作为输出,将训练集的输入作为输入,从新训练一个学习器来失去最终后果。 在这种状况下,咱们将弱学习器称为高级学习器,将用于联合的学习器称为次级学习器。对于测试集,咱们首先用高级学习器预测一次,失去次级学习器的输出样本,再用次级学习器预测一次,失去最终的预测后果。 2. AdaBoostAdaboost是adaptive boosting(自适应boosting)的缩写。算法步骤如下: 2.1. 计算样本权重赋予训练集中每个样本一个权重,形成权重向量D,将权重向量D初始化相等值。设定咱们有m个样本,每个样本的权重都相等,则权重为 2.2. 计算错误率在训练集上训练出一个弱分类器,并计算分类器的错误率: 2.3. 计算弱分离器权重为以后分类器赋予权重值alpha,则alpha计算公式为: 2.4. 调整权重值依据上一次训练后果,调整权重值(上一次分对的权重升高,分错的权重减少 如果第i个样本被正确分类,则该样本权重更改为: 如果第i个样本被分错,则该样本权重更改为: 把下面两个公式汇整成一个: 之后,在同一数据集上再一次训练弱分类器,而后循环上述过程,直到训练错误率为0,或者弱分类器的数目达到指定值。 2.5. 后果循环完结后,咱们能够失去咱们的强分类器的预测后果: ...

February 22, 2023 · 3 min · jiezi

关于机器学习:STA3021001题

STA302/1001 - Final AssignmentDue Wednesday April 22 by 11:59PM EST on CrowdmarkStudent Name:Student Email:Instructions:This final assignment must be completed individually. Any sharing or discussion of questions oranswers with other students will be considered an academic integrity offence. To ensure that allstudents understand the consequences of violating academic integrity, you will need to upload theattached academic integrity acknowledgment (on page 2), signed at the beginning and at the completionof this assignment. In the event of suspected integrity violations, this will serve as evidencethat a student knowingly committed an act of academic misconduct. So please ensure that you readand understand what constitutes academic misconduct as well as the consequences of so doing.Assignments must be submitted electronically through Crowdmark. Each student will receive apersonalized link to view the assignment (this is where you will submit your assignment whenfinished). If you do not receive this email from Crowdmark, check your spam/junk folder. Instructionsfor how to upload completed assignments can be found here: https://crowdmark.com/help/completing-and-submitting-an-assignment/. Note that only PDF, PNG or JPGfile types are accepted by Crowdmark. You will need to upload certain questions into certainplaces, so make sure you are submitting pages in the right place.The assignment is divided into five questions. Each question needs to be uploaded under the correctsection in Crowdmark, otherwise it may be overlooked when graded. For questions that requirehand calculations or proofs/derivations, you must show all your work. You may submit handwrittenanswers for these question, but they must be legible and neat. For questions involving R, you mustprovide an appendix that contains all the R code used to complete the question. We need to beable to verify that your answers can actually be produced from your code. Please do not have Rcode or unnecessary R output in your solutions. This should be in the appendix.Note that as this is meant to replace a final exam and we are keeping the due date of the originalfinal exam, this means that NO EXTENSIONS WILL BE GRANTED. Therefore, if you have notsubmitted by April 22 at 11:59PM EST, you will receive a grade of zero. To ensure thatyou submit on time, please start the submission process early, especially if you have unreliableinternet access.1Academic Integrity Acknowledgement FormAcademic integrity is a fundamental value of learning and scholarship at the UofT. Participatinghonestly, respectfully, responsibly, and fairly in this academic community ensures that your UofTdegree is valued and respected as a true signifier of your individual academic achievement.Prior to beginning this final assignment, you must attest that you will follow the Code of Behaviouron Academic Matters and will not commit academic misconduct in the completion of this assessment.Affirm your agreement to this by completing the following Statement:By signing this Statement, I, , agree to fullyabide to the Code of Behaviour on Academic Matters. I will not commit academicmisconduct and am aware of the penalties that may be imposed if I commit an academicoffence.The University of Toronto’s Code of Behaviour on Academic Matters outlines the behaviours thatconstitute academic misconduct, the processes for addressing academic offences, and the penaltiesthat may be imposed. You are expected to be familiar with the contents of this document.Potential offences include, but are not limited to:• Using someone elses ideas or words without appropriate acknowledgement (this includes frominternet sources or textbooks).• Submitting your own work in more than one course without the permission of the instructor.• Making up sources or facts.• Obtaining or providing unauthorized assistance on any assignment (this includes working ingroups on assignments that are supposed to be individual work).• Looking at someone else’s answers, or working together to answer questions.• Letting someone else look at your answers.• Misrepresenting your identity or having someone else complete your test or exam.All suspected cases of academic dishonesty will be investigated following the procedures outlined inthe Code of Behaviour on Academic Matters.Please sign the Statement below to complete your assessment.By signing this Statement, I, , am attesting tothe fact that I have abided fully to the Code of Behaviour on Academic Matters. Ihave not committed academic misconduct, and am aware of the penalties that maybe imposed if I have committed an academic offence.2Question 1 (12 points) - This question must be done by hand (but may be typed forsubmission)Consider a study design in which we have collected multiple response measurements at each value ofthe predictor. Suppose we have ni observed responses at each value of xi, indexed by i = 1, . . . , m,and yij corresponds to the j-th observation on the response, j = 1, . . . , nifor the i-th value of thepredictor. This means we have m unique predictor values, and ni response measurements for eachof the m values of the predictor. In this situation, it is possible to create a test that can be used totest for how poorly the regression line captures the linear relationship.(a) (4 points) Consider the traditional variance decomposition of a simple regression model:SST = SSReg + RSS. Show that we can further decompose the residual sum of squaresinto• the pure error (i.e. deviations of the individual responses from the average response ateach unique value of the predictor), denoted by SSP ure• and the lack of fit error (i.e. deviations of the average response at each x value from theregression line), denoted by SSLack.(b) (1 points) Determine the degrees of freedom for the pure error and the lack of fit error.(c) (3 points) Determine the expected values of the mean squares of the pure error (MSPure) andthe lack of fit error (MSLack). You may assume that model assumptions are satisfied.(d) (2 points) The test statistic for this test isF =MSLackMSP ure.Explain why this should follow an F distribution.(e) (2 points) Based on the test statistic in (d) and the expected values in (c), explain why a largevalue of the test statistic implies that the true regression function is not linear, and thus thefit of our regression model is poor.3Question 2 (15 points) - This question must be done by hand (but may be typed forsubmission)A study was run to compare the effect of three different drugs on reducing the pain caused bya particular condition. The drugs are labelled A, B, and C, and the response of interest is a painscale rating (integer-valued), where higher values implies more pain. The goal of the study wasto determine whether there exists a difference in the average pain rating between the three drugtreatments. We can answer this question using multiple linear regression methods. The data canbe found below:Drug A 4 5 4 3 2 4 3 4 4Drug B 6 8 4 5 4 6 5 8 6Drug C 6 7 6 6 7 5 6 5 5(a) (2 points) Show that we can represent the three treatments/drugs in the form of two indicatorvariables. Why don’t we require the use of a third indicator variable?(b) (2 points) Find the X0X and X0Y matrices for these data.(c) (3 points) Estimate the regression coefficients for a multiple linear regression model relatingthe pain response Y to the three drugs, X.(d) (3 points) Show that the above regression model can be re-expressed asyij = µ + i + ijwhere µ is the overall average pain rating, iis the average pain rating for drug i, ij is therandom error in the pain rating for individual j and drug i, and yij is the pain rating forindividual j on drug i.(e) (5 points) Perform an appropriate hypothesis test using your model from (c) to determinewhether the average pain ratings for each drug are equal (i.e. i = 0 for all i). Use asignificance level = 0.05 and the residual standard error of 1.089.4Question 3 (8 points) - This question must be done by hand (but may be typed forsubmission)For each of the parts below, please provide a concise (up to three sentences) but detailed explanationfor each of the concepts. Make sure you use your own words for your answers.(a) (2 points) Suppose we have the following correlations between a response variable and twopredictor variables. Explain which predictor the forward selection method would add to themodel first. Would the method then add the second predictor variable? Why or why not?Y X1 X2Y 1 0.93 -0.99X1 0.93 1 0.985X2 -0.99 0.985 1(b) (2 points) Explain how violations in the model assumptions affect the ANOVA test of overallsignificance in simple linear regression.(c) (2 points) In the event that condition 1 or 2 fails, explain why we are unable to use the specificpatterns seen in the residual plots to tell us in what way the model assumptions are violated.(d) (2 points) Explain why, when you have response measurements that are means or medians,using a weight equal to the number of observations used to create that value can correct forviolations of constant variance.5Question 4 (10 points) - This question must be completed using RConsider the New York City menu dataset, which can be found on the assignment page on Quercusor attached with this question.(a) (1 points) Fit a multiple linear regression model to predict Price from the variables Food,Decor, and East. Extract the residuals from this model and save them. What do theyrepresent in the context of this model?(b) (1 points) Fit a multiple linear model to predict Service from Decor, Food and East. Extractthe residuals from this model and save them. What do they represent in the context of thismodel?(c) (1 points) What can we say about the predictors based on the model from (b)?(d) (2 points) Plot the residuals saved from part (a) against the residuals saved from part (b).Add a line representing the simple linear regression relationship between these two sets ofresiduals. What relationship do you see between the two sets of residuals?(e) (3 points) Compare the relationship in your plot from (d) to a multiple linear model predictingPrice from the variables Food, Decor, Service and East. What similarities do you see? Whatdoes the plot represent and how does it achieve this?(f) (2 points) How else might this plot be used for diagnostic purposes?6Question 5 (20 points) - This question must be completed using RFor this question, you will be using the housing.proper.csv dataset which can be found on theassignment page on Quercus or attached to this question on Crowdmark. These data consist of themedian value of owner-occupied homes (Y ) in suburbs of Boston, along with a number of differentneighbourhood characteristics. It contains 506 observations on 13 covariates. You are asked by areal estate developer to build the best possible model to predict the median value of homes in anew subdivision being built, but that is also interpretable so they can justify the use of this modelto shareholders. The possible predictors for this model include:• X1 = per capita crime rate by town• X2 = proportion of residential land zoned for lots over 25000 square feet.• X3 = proportion of non-retail business acres per town• X4 = Charles River indicator variable (1 = near river, 0 = far from river)• X5 = nitric oxide concentration (parts per 10 million)• X6 = average number of rooms per dwelling• X7 = proportion of owner occupied units built prior to 1940• X8 = weighted distance to five Boston employment centres• X9 = index of accessibility to radial highways• X10 = full-value property-tax rate• X11 = pupil-teacher ratio by town• X12 = 1000(B − 0.63)2, where B is the proportion of African Americans by town• X13 = a numeric vector of percentage values of lower status populationYou may use any technique shown in class to arrive at your final model, but you must justify everydecision you make. You will be asked to interpret your final model, explain how you arrived at thismodel and defend why you think this is the best possible model. You may use up to 5 plots inyour explanations and each plot must have a reason for being presented. Please do not include toomuch R output (ideally fewer than 5 outputs) as all your decisions and model diagnostics shouldbe discussed in the text rather than presented with R output. The discussion of your model shouldbe no longer than 500 words. All R code should be at the end in an appendix so we can verifyyour final model and the steps you took to arrive there. Your report with plots and output shouldreasonably be no longer than 3 pages, with the appendix attached after. Do not overload yourappendix with code or output that is not relevant to the creation of your final model.7 ...

February 22, 2023 · 10 min · jiezi

关于机器学习:广义学习矢量量化GLVQ分类算法介绍和代码实现

狭义学习矢量量化(Generalized Learning Vector Quantization,GLVQ)是一种基于原型的分类算法,用于将输出数据调配到先前定义的类别中。GLVQ是LVQ(Learning Vector Quantization)的一种扩大模式,LVQ在特色空间中利用一组代表性原型来对输出数据进行分类。 GLVQGLVQ是一种监督学习算法,属于学习矢量量化(LVQ)算法的领域。LVQ算法是一种基于原型的分类算法,它依据类与代表每个类的一组原型(也称为范例或参考向量)的间隔将类调配给数据点。GLVQ通过容许类之间更灵便的决策边界来扩大LVQ,这在数据类不可线性可分时尤其有用。 GLVQ与LVQ的次要区别在于,GLVQ将类别之间的区别示意为权重矩阵,而不是在特色空间中应用间隔度量。GLVQ中的权重矩阵能够从数据中学习,使得分类器能够自适应地调整权重,以便更好地区分不同的类别。此外,GLVQ还能够应用非线性映射将输出数据投影到一个新的特色空间中,这样就能够更好地解决非线性分类问题。 GLVQ能够利用于各种分类问题,尤其是在须要解决高维度数据和非线性分类问题的状况下。以下是GLVQ的一些具体利用: 模式识别:GLVQ能够用于模式识别,例如人脸识别、手写数字辨认、图像分类等。通过将输出数据映射到原型向量空间,GLVQ能够在原型向量之间寻找最佳匹配,实现分类的目标。计算机视觉:GLVQ能够用于计算机视觉畛域的各种工作,例如指标检测、图像宰割、物体跟踪等。GLVQ能够将输出数据投影到一个低维空间,而后利用原型向量来分类数据。生物医学工程:GLVQ能够利用于生物医学工程畛域,例如基因表白数据分析、心电信号分类等。GLVQ能够用于剖析和分类简单的生物医学数据,帮忙钻研人员辨认疾病的特色并做出预测。自然语言解决:GLVQ能够用于自然语言解决畛域,例如文本分类、情感剖析、机器翻译等。GLVQ能够通过将文本数据映射到原型向量空间来实现文本分类和情感剖析等工作。GLVQ的指标是学习一个权重矩阵,该矩阵将输出向量映射到类别空间中的向量。该映射能够通过最小化一个指标函数来学习,该指标函数将输出向量映射到它们正确的类别向量的间隔最小化。 具体来说,GLVQ学习一个由原型向量组成的汇合,其中每个原型向量代表一个类别。对于一个新的输出向量,GLVQ计算该向量与每个原型向量之间的间隔,并将其调配给与其间隔最近的原型向量所代表的类别。GLVQ能够依据分类的准确性调整原型向量的地位,以便更好地区分不同的类别。 GLVQ有许多变体,包含适应性GLVQ(Adaptive GLVQ)、增强型GLVQ(Enhanced GLVQ)和概率GLVQ(Probabilistic GLVQ),它们在权重矩阵的模式、指标函数和学习算法等方面有所不同。这些变体广泛应用于模式识别、计算机视觉、语音辨认等畛域,以解决各种分类问题。 数学解释和python代码狭义学习矢量量化(Generalized Learning Vector Quantization,GLVQ)的分类原理是将输出样本映射到原型向量上,并找到间隔最近的原型向量,将输出样本调配给与其间隔最近的原型向量所代表的类别。 在 GLVQ 中,每个类别都有一个原型向量,示意该类别在特色空间中的地位。输出样本与原型向量之间的间隔能够通过欧几里得间隔或曼哈顿间隔等度量办法来计算。下图为二元分类的代码 # normalize the data defnormalization(self, input_data): minimum=np.amin(input_data, axis=0) maximum=np.amax(input_data, axis=0) normalized_data= (input_data-minimum)/(maximum-minimum) returnnormalized_data # define prototypes defprt(self, input_data, data_labels, prototype_per_class): # prototype_labels are prototype_labels=np.unique(data_labels) prototype_labels=list(prototype_labels) *prototype_per_class # prototypes are prt_labels=np.expand_dims(prototype_labels, axis=1) expand_dimension=np.expand_dims(np.equal(prt_labels, data_labels), axis=2) count=np.count_nonzero(expand_dimension, axis=1) proto=np.where(expand_dimension, input_data, 0) prototypes=np.sum(proto, axis=1)/count self.prt_labels=prototype_labels returnself.prt_labels, prototypes # define euclidean distance defeuclidean_dist(self, input_data, prototypes): expand_dimension=np.expand_dims(input_data, axis=1) distance=expand_dimension-prototypes distance_square=np.square(distance) sum_distance=np.sum(distance_square, axis=2) eu_dist=np.sqrt(sum_distance) returneu_dist # define d_plus defdistance_plus(self, data_labels, prototype_labels, prototypes, eu_dist): expand_dimension=np.expand_dims(prototype_labels, axis=1) label_transpose=np.transpose(np.equal(expand_dimension, data_labels)) # distance of matching prototypes plus_dist=np.where(label_transpose, eu_dist, np.inf) d_plus=np.min(plus_dist, axis=1) # index of minimum distance for best matching prototypes w_plus_index=np.argmin(plus_dist, axis=1) w_plus=prototypes[w_plus_index] returnd_plus, w_plus, w_plus_index # define d_minus defdistance_minus(self, data_labels, prototype_labels, prototypes, eu_dist): expand_dimension=np.expand_dims(prototype_labels, axis=1) label_transpose=np.transpose(np.not_equal(expand_dimension, data_labels)) # distance of non matching prototypes minus_dist=np.where(label_transpose, eu_dist, np.inf) d_minus=np.min(minus_dist, axis=1) # index of minimum distance for non best matching prototypes w_minus_index=np.argmin(minus_dist, axis=1) w_minus=prototypes[w_minus_index] returnd_minus, w_minus, w_minus_index ...

February 22, 2023 · 3 min · jiezi

关于机器学习:推荐系统二召回算法超详细讲解召回模型演化过程召回模型主流常见算法召回路径简介多路召回融合

1.前言:召回排序流程策略算法简介举荐可分为以下四个流程,别离是召回、粗排、精排以及重排: 召回是源头,在某种意义上决定着整个举荐的天花板;粗排是初筛,个别不会上简单模型;精排是整个举荐环节的重中之重,在特色和模型上都会做的比较复杂;重排,个别是做打散或满足业务经营的特定强插需要,同样不会应用简单模型;召回层:召回解决的是从海量候选item中召回千级别的item问题 统计类,热度,LBS;协同过滤类,UserCF、ItemCF;U2T2I,如基于user tag召回;I2I类,如Embedding(Word2Vec、FastText),GraphEmbedding(Node2Vec、DeepWalk、EGES);U2I类,如DSSM、YouTube DNN、Sentence Bert; 模型类:模型类的模式是将用户和item别离映射到一个向量空间,而后用向量召回,这类有itemcf,usercf,embedding(word2vec),Graph embedding(node2vec等),DNN(如DSSM双塔召回,YouTubeDNN等),RNN(预测下一个点击的item失去用户emb和item emb);向量检索能够用Annoy(基于LSH),Faiss(基于矢量量化)。此外还见过用逻辑回归搞个预估模型,把权重大的穿插特色拿进去构建索引做召回排序策略,learning to rank 流程三大模式(pointwise、pairwise、listwise),次要是特色工程和CTR模型预估; 粗排层:实质上跟精排相似,只是特色和模型复杂度上会精简,此外也有将精排模型通过蒸馏失去简化版模型来做粗排 常见的特色开掘(user、item、context,以及互相穿插);精排层:精排解决的是从千级别item到几十这个级别的问题 CTR预估:lr,gbdt,fm及其变种(fm是一个工程团队不太强又对算法精度有肯定要求时比拟好的抉择),widedeep,deepfm,NCF各种穿插,DIN,BERT,RNN多指标:MOE,MMOE,MTL(多任务学习)打分公式交融: 随机搜寻,CEM(性价比比拟高的办法),在线贝叶斯优化(高斯过程),带模型CEM,强化学习等 重排层:重排层解决的是展现列表总体最优,模型有 MMR,DPP,RNN系列(参考阿里的globalrerank系列)展现层: 举荐理由:统计规定、行为规定、抽取式(个别从评论和内容中抽取)、生成式;排序能够用汤普森采样(简略无效),交融到精排模型排等等首图优选:CNN抽特色,汤普森采样摸索与利用:随机策略(简略无效),汤普森采样,bandit,强化学习(Q-Learning、DQN)等产品层:交互式举荐、分tab、多种类型物料交融2.召回算法简介召回辨别主路和旁路,主路的作用是个性化+向上治理,而旁路的作用是查缺补漏举荐零碎的前几个操作可能就决定了整个零碎的走向,在初期肯定要三思而后行做自媒体,打广告,漏斗的入口有多大很重要。召回这里略微有些简单,因为召回是多路的。首先咱们要解释主路和旁路的差异,主路的意义和粗排相似,能够看作是一个入口更大,但模型更加简略的粗排。主路的意义是为粗排分担压力。然而旁路却不是这样的,旁路呈现的机会往往是当主路存在某种机制上的问题,而单靠当初的这个模型很难解决的时候。举个例子,主路召回学的不错,然而它可能因为某种原因,特地厌恶影视剧片段这一类内容,导致了这类视频无奈回升到粗排上。那这样的话整个零碎推不出影视剧片段就是一个问题。从多路召回的角度来讲,咱们可能须要单加一路专门召回影视剧的,并且规定:主路召回只能出3000个,这一路新加的固定出500个,两边合并起来进入到粗排中去。这个栗子,是呈现旁路的一个动机。 2.1 召回门路介绍举荐零碎中的i2i、u2i、u2i2i、u2u2i、u2tag2i,都是指举荐零碎的召回门路。 第一种召回,是非个性化的。比方对于新用户,咱们要确保用最高品质的视频把他们留住,那么咱们能够划一个“精品池”进去,依据他们的某种热度排序,作为一路召回。做法就是新用户的每次申请咱们都把这些精品池的内容当做后果送给粗排。这样的召回做起来最容易,用sql就能够搞定。第二种召回,是i2i,i指的是item,严格意义上应该叫u2i2i。指的是用用户的历史item,来找类似的item。比如说咱们把用户过来点过赞的视频拿进去,去找画面上,BGM上,或者用户行为构造上类似的视频。等于说咱们就认为用户还会喜爱看同样类型的视频。这种召回,既能够从内容上建设类似关系(利用深度学习),也能够用当初比拟火的graph来构建关系。这种召回累赘也比拟小,图像上谁和谁类似齐全能够离线计算,甚至都不会随着工夫变动。第三种召回是u2i,即纯正从user和item的关系登程。咱们所说的双塔就是一个典型的u2i。在用户申请过去的时候,计算出user的embedding,而后去一个实现存好的item embedding的空间,寻找最类似的一批拿进去。因为要实时计算user特色,它的累赘要大于后面两者,但这种召回个性化水平最高,实际中成果也是十分好的。 通过上图了解什么是召回门路: u、i、tag是指图中的节点2是指图中的线(关系)i2i:指从一个物品达到另外一个物品,item 到 item 利用:头条,在下方列出类似的、相干的文章;算法: 内容类似,eg:文章的类似,取题目的关键字,内容类似协同过滤关联规定开掘等两个物品被同时看的可能性很大,当一个物品被查看,就给他举荐另一个物品u2i:指从一个用户达到一个物品,user 到item 个别指用户的间接行为,比方播放、点击、购买等;用户查看了一个物品,就会再次给它举荐这个物品联合i2i一起应用,就是用户查看以合物品,就会给他举荐另一个类似的物品,就是u2i2i门路;u2i2i:从一个用户,通过一个物品,达到另一个物品 用户查看了一个耳机(u2i),找出和这个耳机类似或者相干的产品(i2i)并举荐给用户对门路的应用,曾经从一条线变成两条线办法:就是把两种算法联合起来,先失去u2i的数据,再利用i2i的数据进行扩大,就能够从第一个节点,越过一个节点,达到第三个节点,实现举荐两头的桥梁是itemu2u2i:从一个用户,达到另一个用户,达到一个物品 先计算u2u:两种办法 一是:取用户的性别、年龄、职业等人工属性的信息,计算相似性,失去u2u;一是:从行为数据中进行开掘,比方看的内容和视频大部分很类似,就能够看作一类人;也能够应用聚类的办法进行u2u计算u2u个别用在社交里,比方微博、Facebook,举荐感兴趣的人userB和UserC类似,如果userB查看了某个商品,就把这个商品举荐给userC;两头的桥梁是useru2tag2i:两头节点是Tag标签,而不是 u 或者 i 京东,豆瓣,物品的标签十分丰盛、十分具体;比方统计一个用户历史查看过的书籍,就能够计算标签偏好的向量:标签+喜爱的强度。用户就达到了tag的节点,而商品自身带有标签,这就能够互通,进行举荐先算出用户的tag偏好,而后匹配item列表这种办法的泛化性能比拟好(举荐的内容不那么狭隘,比方喜爱科幻,那么会举荐科幻的所有内容)今日头条就大量应用标签举荐基于图的算法:u22i* 起始于U,完结于I,两头逾越很多的U、很多的I,能够在图中不停的游走例如:PersonalRank,不限度一条还是两条线,在图中到处的游走,游走带着概率,能够达到很多的item;然而相比后面一条、两条边的门路,性能不是很好2.2 多路召回交融排序2.2.1 多路召回举荐服务个别有多个环节(召回、粗排序、精排序),个别会应用多个召回策略,相互补救有余,成果更好。比如说: 实时召回- U2I2I, 几秒之内依据行为更新举荐列表。用U2I失去你实时的行为对象列表,再依据I2I失去可能喜爱的其余的物品这个是实时召回,剩下3个是提前算好的基于内容 - U2Tag2I 先算好用户的偏好tag,而后对tag计算类似度,获取可能感兴趣的item矩阵合成 - U2I 先算好User和Item的tag矩阵,而后叉乘,给每个user举荐item提前存储好进行举荐聚类举荐 - U2U2I 依据用户信息对用户进行聚类,而后找到最类似的user,举荐最类似user喜爱的物品;或者找到聚类中大家喜爱的物品,进行举荐写程序时,每个策略之间息息相关,所以: 1、个别能够编写并发多线程同时执行 2、每一种策略输入后果,都有一个程序,但最初要的后果只有一个列表,这就须要交融排序2.2.2 交融排序多种召回策略的内容,取TOPN合并成一个新的列表。这个新的列表,能够间接返回给前端,进行展现;也能够发给精排,进行排序。 精排模型十分耗时,所以召回的内容,会通过粗排之后,把大量的数据给精排进行排序 几种多路召回后果交融的办法举个例子:几种召回策略返回的列表(Item-id,权重)别离为: 召回策略返回列表 召回策略XA:0.9B:0.8C:0.7召回策略YB:0.6C:0.5D:0.4召回策略ZC:0.3D:0.2E:0.1交融策略:1、按程序展现 比如说实时 > 购买数据召回 > 播放数据召回,则间接展现A、B、C、D、E2、平均法 分母为召回策略个数,分子为权重加和C为(0.7+0.5+0.3)/3,B为(0.8+0.6)/33、加权均匀 比方三种策略本人指定权重为0.4、0.3、0.3,则B的权重为(0.40.8 + 0.60.3 + 0*0.2)/ (0.4+0.3+0.2),这个办法有个问题就是,每个策略的权重是本人设置的,并不精确,所以,有动静加权法4、动静加权法 ...

February 22, 2023 · 1 min · jiezi

关于机器学习:FATE联邦学习FATE框架的document-微微指南

FATE官网文档:https://fate.readthedocs.io/e...,点击【learn more】就进入文档注释了 FATE是一个服务,须要先下载,后运行。文档中在【deploy】局部也写了举荐应用docker下载,一般来说想疾速玩玩就用【standalone】模式。 docker启动后,能够移步到tutorial的【Usage】选项,其中列出的每一项都是一个小例子,能够运行着玩。然而外面没有对各个变量和简写的解释阐明。 想要读懂代码里的变量、简写变量意义等,要回到tutorial外面的【FederatedML】选项外面,外面有具体介绍。另外,在FATE框架外面,横向联邦学习被叫做homo模式,纵向联邦学习叫hetero模式。 略微总结一下: 想要疾速下载、运行FATE服务:找tutorial外面的【deploy】选项;想要疾速运行小demo:找tutorial外面的【Usage】外面的例子想要读懂小demo外面的变量和意义,找tutorial外面的【FederatedML】。

February 21, 2023 · 1 min · jiezi

关于机器学习:计算时间序列周期的三种方法

周期是数据中呈现反复模式所需的工夫长度。更具体地说,它是模式的一个残缺周期的持续时间。在这篇文章中,将介绍计算工夫序列周期的三种不同办法。 咱们应用City of Ottawa 数据集,次要关注的是每天的服务呼叫数量。所以不须要对病房名称进行初始数据处理。Ottawa 数据集在渥太华市提供的数据门户网站上收费提供。 让咱们加载2019-2022年的这些数据,并将它们连接起来失去一个df。 fromgoogle.colabimportdrive drive.mount('/content/gdrive') importpandasaspd importmatplotlib.pyplotasplt importseabornassns importnumpyasnp file_path='/content/gdrive/My Drive/Colab Notebooks/Data/SR-2019.xlsx' records2019=pd.read_excel(file_path)#,encoding='utf16') file_path='/content/gdrive/My Drive/Colab Notebooks/Data/SR-2020.xlsx' records2020=pd.read_excel(file_path)#,encoding='utf16') file_path='/content/gdrive/My Drive/Colab Notebooks/Data/2021_Monthly_Service_Requests_EN.xlsx' records2021=pd.read_excel(file_path)#,encoding='utf16') file_path='/content/gdrive/My Drive/Colab Notebooks/Data/2022_Monthly_Service_Requests.csv' records2022=pd.read_csv(file_path) records=pd.concat([records2019,records2020,records2021,records2022],axis=0)让咱们依据服务调用日期聚合这些数据,并失去一个简略的图。 records["DATE_RAISED"]=pd.to_datetime(records.DATE_RAISED) record_by_date=records.groupby("DATE_RAISED")["TYPE"].count().sort_index() record_by_date.plot(figsize= (25, 10)) plt.ylabel('Number of requests') plt.grid(visible=True,which='both') plt.figure() record_by_date.iloc[100:130].plot(figsize= (25, 10)) plt.ylabel('Number of requests') plt.grid(visible=True,which='both') 填充缺失让咱们检查一下咱们的数据是否蕴含了所有的日期。 start_date=record_by_date.index.min() end_date=record_by_date.index.max() # create a complete date range for the period of interest date_range=pd.date_range(start=start_date, end=end_date, freq='D') # compare the date range to the index of the time series missing_dates=date_range[~date_range.isin(record_by_date.index)] iflen(missing_dates) >0: print("Missing dates:", missing_dates) else: print("No missing dates")正如所预期的那样,数据短少一些日期的值。让咱们用相邻日期的平均值填充这些值。 ...

February 21, 2023 · 2 min · jiezi

关于机器学习:机器学习集成学习LightGBM

前言LightGBM 是微软开发的一个弱小的开源梯度晋升框架。它旨在高效和可扩大,可能解决大型数据集和高维特色。LightGBM联合应用基于梯度的单边采样(GOSS)和独占特色捆绑(EFB)来升高计算成本并进步模型的准确性。 LightGBM 反对各种指标函数,可用于回归和分类问题。它还提供了一些高级性能,例如提前进行、穿插验证和超参数调整,以帮忙用户构建持重的模型。此外,它还为风行的编程语言(如 Python、R 和 C++)提供接口,使其易于集成到现有的数据迷信工作流程中。 总体而言,LightGBM 是构建高性能梯度晋升模型的热门抉择,尤其是对于大规模和高维数据集。 介绍LightGBMLightGBM的背景和起源LightGBM是一个开源的梯度晋升框架,由微软公司在2017年推出。它旨在提供一个高效、可扩大、精确和易于应用的机器学习工具,能够解决大规模数据和高维特色,实用于回归、分类和排序等各种工作。LightGBM的起源能够追溯到GBDT(梯度晋升决策树)算法,它是一种基于决策树的机器学习办法,通过递归地训练一系列的决策树来构建一个弱小的预测模型。GBDT曾经被广泛应用于各种畛域,例如举荐零碎、广告和金融等。然而,GBDT算法依然存在一些限度,例如对于高维数据和大规模数据集的解决效率不高。为了解决这些问题,LightGBM引入了一些创新性的技术,如基于梯度的单侧采样(GOSS)和独占特色绑定(EFB)等,以进步训练速度和准确性。此外,LightGBM还反对并行化解决、GPU减速、多种损失函数和多种分类器等性能,使其在大规模数据和高维特色的解决中表现出色。这些劣势使得LightGBM在学术界和工业界都失去宽泛的利用和认可。LightGBM的长处和实用场景高效性:LightGBM引入了基于梯度的单侧采样(GOSS)和独占特色绑定(EFB)等创新性技术,进步了模型的训练速度和准确性。它也反对多线程和GPU减速,进一步提高了解决效率。可扩展性:LightGBM可能解决大规模数据和高维度特色,并且反对分布式计算,可在多个计算节点上并行训练模型。准确性:LightGBM在解决高维度数据和非线性问题时表现出色,通常能够取得比其余梯度晋升框架更好的预测后果。可解释性:LightGBM反对特色重要性评估和可视化,可能帮忙用户了解模型的工作原理和特色的奉献。灵活性:LightGBM反对多种损失函数和分类器,可能适应各种回归、分类和排序工作。基于上述长处,LightGBM实用于以下场景: 大规模数据和高维特色:当数据集规模很大或者特色维度很高时,LightGBM能够通过并行化和创新性技术,疾速地训练出一个精确的模型。非线性问题:LightGBM在解决非线性问题时表现出色,因而它实用于许多须要解决非线性问题的畛域,例如金融、电商和医疗等。可解释性需要:LightGBM反对特色重要性评估和可视化,可能帮忙用户了解模型的工作原理和特色的奉献,实用于须要了解模型背地逻辑的场景。须要疾速训练和预测的场景:LightGBM在解决大规模数据和高维特色时表现出色,因而实用于须要疾速训练和预测的场景,例如在线广告和举荐零碎等。LightGBM的根本工作原理通过迭代地训练多棵决策树来构建一个弱小的集成模型。损失函数:LightGBM反对多种损失函数,例如均方误差(MSE)、对数损失(Log loss)和L1损失等。用户能够依据具体问题抉择适合的损失函数。初始化:LightGBM将训练数据随机分成若干个小批次,每个小批次的大小能够由用户自定义。对于每个小批次,LightGBM应用一棵单节点的决策树作为初始模型。梯度晋升:LightGBM采纳梯度晋升算法,通过迭代地训练多棵决策树来一直进步模型的预测准确性。在每次迭代中,LightGBM依据以后模型的预测后果计算出每个样本的负梯度,将负梯度作为新的指标变量来训练下一棵决策树。这样,每棵决策树都是在之前模型的根底上进行训练的。单侧采样:LightGBM引入了基于梯度的单侧采样(GOSS)技术,通过升高低梯度样本的采样率,进步高梯度样本的采样率,缩小数据集的噪声,从而减速模型的训练。独占特色绑定:LightGBM还引入了独占特色绑定(EFB)技术,将类似的特色分成一组,同时只选取一组特色作为决策树决裂的根据,缩小了决裂的计算量和噪声,进步了模型的准确性和泛化能力。决裂策略:LightGBM采纳基于梯度的直方图决裂算法,将特征值依照梯度的大小划分为若干个直方图,选取最优的决裂点来进行决裂,缩小了计算量和噪声,进步了模型的准确性和泛化能力。叶子结点优化:LightGBM采纳直方图优化算法,将每个叶子结点的样本依照特征值的大小划分为若干个直方图,计算每个直方图的梯度和Hessian矩阵,从而疾速地确定每评估指标:LightGBM反对多种评估指标,例如准确率、AUC、均匀绝对误差(MAE)和均方误差(MSE)等。用户能够依据具体问题抉择适合的评估指标。提前进行:LightGBM还反对提前进行技术,当模型的性能在验证集上不再晋升时,主动进行模型的训练,避免模型过拟合。并行减速:LightGBM采纳并行减速技术,能够利用多线程和多机并行减速模型的训练,进步模型训练的效率。装置和配置LightGBM装置LightGBMhtGBM的装置能够通过多种形式进行,这里介绍两种较为罕用的形式:应用Anaconda装置和应用pip装置。 应用Anaconda装置: 首先,须要装置Anaconda(如果曾经装置,能够跳过此步骤)。在Anaconda官网上下载对应版本的Anaconda安装程序,装置过程中能够依据须要抉择增加环境变量、设置门路等选项。关上Anaconda Prompt,输出以下命令创立一个新的conda环境(例如,取名为lgb): conda create -n lgb python=3.7其中,python=3.7示意创立Python 3.7的环境,能够依据须要抉择其余版本。 激活lgb环境: conda activate lgb装置LightGBM: conda install lightgbm或者 pip install lightgbm装置实现后,能够应用以下命令验证LightGBM是否装置胜利: python -c "import lightgbm; print(lightgbm.__version__)"如果输入了LightGBM的版本号,则阐明装置胜利。因为LightGBM是一个C++库,装置时还须要装置C++编译器和相干的开发工具。 配置LightGBM的环境为了更好地应用LightGBM,须要配置相应的环境。次要包含以下几个方面: 数据格式:LightGBM反对多种数据格式,包含libsvm格局、CSV格局、numpy数组和Pandas DataFrame等。在应用LightGBM之前,须要确保数据格式正确,并依据具体情况抉择适合的数据格式。参数设置:LightGBM有多个参数能够进行调整,例如树的深度、学习率、叶子结点数目等。在应用LightGBM之前,须要理解这些参数的含意和作用,并依据具体情况进行调整。并行减速:LightGBM反对多线程和分布式计算,能够大大放慢模型的训练速度。在应用LightGBM之前,须要配置并行减速的相干参数,以充分利用计算资源。GPU减速:LightGBM还反对应用GPU进行减速,能够进一步提高模型的训练速度。在应用LightGBM之前,须要配置GPU的相干参数,并确保零碎中曾经装置了适当的GPU驱动程序和CUDA工具包。具体来说,能够依照以下步骤进行LightGBM环境的配置: 数据格式的配置:依据数据的格局抉择不同的数据读取函数,例如: import pandas as pdimport numpy as npimport lightgbm as lgb# 读取CSV格局的数据data = pd.read_csv('data.csv')# 将numpy数组转换为Dataset格局X_train = np.random.rand(100, 10)y_train = np.random.rand(100)train_data = lgb.Dataset(X_train, label=y_train)参数设置的配置:应用参数字典进行参数的配置,例如: params = { 'boosting_type': 'gbdt', 'objective': 'binary', 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9}并行减速的配置:应用参数管制并行减速的形式和线程数,例如: ...

February 21, 2023 · 2 min · jiezi

关于机器学习:297个机器学习彩图知识点12

导读本系列将继续更新20个机器学习的知识点,欢送关注。1. 随机梯度降落 2. 停用词 3. 不均衡数据策略 4. 过拟合策略 5. 监督式深度学习的外围规定 6. 监督&非监督学习 7. 反对向量机分类器 8. 软距离分类 9. 反对向量 10. SVC的径向基函数核 11. T 统计量 12. 双曲正切激活函数 13. 张量 14. 数据集 15. 加权技术 16. Dropout 17. 特色缩放 18. 模型的复杂度 19. 随机森林中的随机性 20. 激活阈 本文由mdnice多平台公布

February 20, 2023 · 1 min · jiezi

关于机器学习:机器学习集成学习XGBoost

前言XGBoost (eXtreme Gradient Boosting) 是一种风行的机器学习算法,用于解决各种预测问题,例如分类、回归和排名。在本文中,咱们将介绍 XGBoost 的基本原理、常见的利用和一些实践经验.基本原理XGBoost 是一种基于梯度晋升决策树 (Gradient Boosting Decision Trees) 的机器学习算法。其基本原理是通过将多个决策树组合成一个弱小的模型,从而进步预测准确性。决策树是一种用于分类和回归的树状构造,其中每个叶子节点代表一个类别或一个预测值。梯度晋升决策树是一种机器学习技术,它通过迭代地训练多个决策树来进步预测准确性。在每次迭代中,算法会训练一个新的决策树,以纠正前一轮迭代中产生的误差。这种迭代过程会始终继续,直到算法达到预约的进行条件为止。XGBoost 通过引入一些非凡的技术来进步梯度晋升决策树的效率和准确性。例如,它应用梯度优化算法来最小化损失函数,以确保每个新的决策树都会奉献最大化的预测准确性。此外,XGBoost 还应用了一些正则化技术,例如 L1 和 L2 正则化,来防止过拟合。常见利用XGBoost 能够用于分类问题,例如预测信用卡欺诈或者预测股票价格的涨跌。在分类工作中,模型会将输出数据映射到一个离散的类别或标签上。XGBoost 能够用于回归问题,例如预测房价或者预测销售额。在回归工作中,模型会将输出数据映射到一个间断的预测值上。XGBoost 能够用于搜索引擎或举荐零碎中的排名工作,例如依据用户历史行为预测商品或者新闻的排序。在排名工作中,模型会将输出数据映射到一个排序分数上,以便依照分数排序。特征选择XGBoost 能够主动抉择重要的特色,但有时须要手动抉择特色。一种常见的办法是应用特色重要性分数,它掂量了每个特色对模型的奉献水平。能够应用 XGBoost 提供的 plot_importance() 函数来可视化特色重要性分数,以帮忙抉择特色。参数调整XGBoost 有许多参数能够调整,以进步模型的性能。其中一些重要的参数如: n_estimators:决策树的数量learning_rate:学习率,管制每个决策树的奉献水平max_depth:决策树的最大深度subsample:用于训练每个决策树的样本比例colsample_bytree:用于训练每个决策树的特色比例gamma:管制决策树剪枝的参数这只是一部分 XGBoost优缺点长处: 高效性:XGBoost 应用了多线程和近似算法等技术,可能高效地解决大规模数据和高维特色。准确性:XGBoost 应用了梯度晋升算法和正则化技术等,可能无效地防止过拟合和欠拟合等问题,进步模型的准确性。可解释性:XGBoost 能够输入特色重要性和决策树等信息,不便用户了解模型的工作原理。灵活性:XGBoost 反对多种损失函数和评估指标,能够用于分类、回归、排序等多种工作。可扩展性:XGBoost 能够与其余机器学习库和工具集成,如 Scikit-learn、Spark 等。毛病: 对噪声敏感:XGBoost 对于噪声数据较为敏感,须要进行数据荡涤和解决等操作。参数调整较为简单:XGBoost 有很多参数须要调整,如决策树的数量、最大深度、学习率等,须要进行较为简单的参数调整过程。训练工夫较长:XGBoost 的训练工夫较长,特地是在解决大规模数据时,须要较长的训练工夫和较高的计算资源。模型集成XGBoost 能够与其余模型联合应用,例如随机森林、反对向量机和神经网络等。一种常见的办法是应用模型集成技术,例如重叠 (stacking) 或者投票 (voting)。重叠技术是将多个不同的模型组合成一个更弱小的模型,而投票技术则是将多个雷同的模型组合成一个更稳固的模型。并行计算XGBoost 反对并行计算,能够在多个 CPU 或 GPU 上运行。为了利用并行计算,能够将 n_jobs 参数设置为大于 1 的值,以指定应用的 CPU 或 GPU 数量。此外,还能够应用 Dask 等分布式计算框架来在多个计算节点上运行 XGBoost。代码import xgboost as xgbfrom sklearn.datasets import load_bostonfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_error# 加载波士顿房价数据集boston = load_boston()X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=123)# 把训练集和测试集转换成 DMatrix 格局dtrain = xgb.DMatrix(X_train, label=y_train)dtest = xgb.DMatrix(X_test, label=y_test)# 定义 XGBoost 的参数params = { 'max_depth': 3, # 每棵决策树的最大深度 'eta': 0.1, # 学习率 'subsample': 0.7, # 每次随机抉择的样本比例 'colsample_bytree': 0.7, # 每棵决策树随机抉择的特色比例 'objective': 'reg:squarederror', # 损失函数 'eval_metric': 'rmse', # 评估指标 'silent': 1 # 是否输入日志信息}# 训练 XGBoost 模型num_round = 100 # 决策树的数量bst = xgb.train(params, dtrain, num_round)# 应用测试集进行预测y_pred = bst.predict(dtest)# 输入 RMSE 作为评估指标print('RMSE:', mean_squared_error(y_test, y_pred, squared=False))这里应用的是波士顿房价数据集,将数据集拆分为训练集和测试集,并应用 train_test_split 函数。而后,将训练集和测试集转换成 XGBoost 中的 DMatrix 格局。在定义 XGBoost 的参数时,咱们指定了每棵决策树的最大深度、学习率、每次随机抉择的样本比例、每棵决策树随机抉择的特色比例、损失函数和评估指标等参数。应用 xgb.train 函数训练 XGBoost 模型,其中 num_round 示意决策树的数量。最初,应用测试集进行预测,并计算 RMSE 作为评估指标。 ...

February 20, 2023 · 1 min · jiezi

关于机器学习:使用-Autoscheduling-优化算子

本篇答复来源于 TVM 官网英文文档 Lianmin Zheng,Chengfan Jia。更多 TVM 中文文档可拜访→https://tvm.hyper.ai/ 本教程将展现 TVM 的 Auto Scheduling 性能,如何在不编写自定义模板的状况下,找到最佳 schedule。 与基于模板的 AutoTVM 依赖手工模板来定义搜寻空间不同,auto-scheduler 不须要任何模板。用户只需编写计算申明,无需任何 schedule 命令或模板。auto-scheduler 能够主动生成一个大的搜寻空间,并在空间中找到最优 schedule。 本教程中应用矩阵乘法作为示例。 留神,本教程不会在 Windows 或最新版本的 macOS 上运行。如需运行,请将本教程的主体放在 if name == "__main__": 代码块中。import osimport numpy as npimport tvmfrom tvm import te, auto_scheduler定义矩阵乘法首先,定义一个带有偏置加法的矩阵乘法。留神,这里应用了 TVM 张量表达式语言中的规范操作。次要区别在于函数定义上方应用了 register_workload 装璜器。该函数应返回输出/输入张量列表。通过这些张量,auto-scheduler 能够失去整个计算图。 @auto_scheduler.register_workload # Note the auto_scheduler decoratordef matmul_add(N, L, M, dtype): A = te.placeholder((N, L), name="A", dtype=dtype) B = te.placeholder((L, M), name="B", dtype=dtype) C = te.placeholder((N, M), name="C", dtype=dtype) k = te.reduce_axis((0, L), name="k") matmul = te.compute( (N, M), lambda i, j: te.sum(A[i, k] * B[k, j], axis=k), name="matmul", attrs={"layout_free_placeholders": [B]}, # enable automatic layout transform for tensor B ) out = te.compute((N, M), lambda i, j: matmul[i, j] + C[i, j], name="out") return [A, B, C, out]创立搜寻工作定义函数后,能够为 auto_scheduler 创立要搜寻的工作。咱们为这个矩阵乘法指定了特定的参数,如这里是两个大小为 1024x1024 的矩阵乘法。而后咱们创立一个 N=L=M=1024 和 dtype="float32" 的搜寻工作 ...

February 20, 2023 · 4 min · jiezi

关于机器学习:使用PyTorchLSTM进行单变量时间序列预测的示例教程

工夫序列是指在一段时间内产生的任何可量化的度量或事件。只管这听起来微不足道,但简直任何货色都能够被认为是工夫序列。一个月里你每小时的均匀心率,一年里一只股票的日收盘价,一年里某个城市每周产生的交通事故数。在任何一段时间段内记录这些信息都被认为是一个工夫序列。对于这些例子中的每一个,都有事件产生的频率(每天、每周、每小时等)和事件产生的工夫长度(一个月、一年、一天等)。 在本教程中,咱们将应用PyTorch-LSTM进行深度学习工夫序列预测。 咱们的指标是接管一个值序列,预测该序列中的下一个值。最简略的办法是应用自回归模型,咱们将专一于应用LSTM来解决这个问题。 数据筹备让咱们看一个工夫序列样本。下图显示了2013年至2018年石油价格的一些数据。 这只是一个日期轴上单个数字序列的图。下表显示了这个工夫序列的前10个条目。每天都有价格数据。 date dcoilwtico 2013-01-01 NaN 2013-01-02 93.14 2013-01-03 92.97 2013-01-04 93.12 2013-01-07 93.20 2013-01-08 93.21 2013-01-09 93.08 2013-01-10 93.81 2013-01-11 93.60 2013-01-14 94.27许多机器学习模型在标准化数据上的体现要好得多。标准化数据的规范办法是对数据进行转换,使得每一列的均值为0,标准差为1。上面的代码scikit-learn进行标准化 fromsklearn.preprocessingimportStandardScaler # Fit scalers scalers= {} forxindf.columns: scalers[x] =StandardScaler().fit(df[x].values.reshape(-1, 1)) # Transform data via scalers norm_df=df.copy() fori, keyinenumerate(scalers.keys()): norm=scalers[key].transform(norm_df.iloc[:, i].values.reshape(-1, 1)) norm_df.iloc[:, i] =norm咱们还心愿数据具备对立的频率——在这个例子中,有这5年里每天的石油价格,如果你的数据状况并非如此,Pandas有几种不同的办法来从新采样数据以适应对立的频率,请参考咱们公众号以前的文章 对于训练数据咱们须要将残缺的工夫序列数据截取成固定长度的序列。假如咱们有一个序列:[1, 2, 3, 4, 5, 6]。 通过抉择长度为 3 的序列,咱们能够生成以下序列及其相干指标: [Sequence] Target [1, 2, 3] → 4 ...

February 20, 2023 · 5 min · jiezi

关于机器学习:机器学习集成学习GBDT

前言 GBDT(Gradient Boosting Decision Trees)是一种基于决策树的集成学习算法,它通过逐渐地训练多个决策树模型来进步预测性能。具体来说,GBDT采纳加法模型(additive model)的思维,每次训练一个新的决策树来拟合残差(预测误差),而后将所有决策树的预测后果相加作为最终的预测值。 一、原理 具体来说,GBDT算法采纳加法模型的思维,行将每个模型的预测后果相加来失去最终的预测后果。在每一轮迭代中,GBDT算法会依据以后模型的预测后果计算出残差,而后应用残差作为指标变量从新训练一个决策树。多轮迭代之后,所有的决策树的预测后果相加就能够失去最终的预测后果。 具体实现流程: 初始化模型:将所有样本的实在值作为初始预测值。对于每一轮迭代: a. 计算以后模型的预测值。 b. 计算以后模型的残差。 c. 依据残差训练一个新的决策树模型。 d. 计算新模型的预测后果,并将其与之前所有模型的预测后果相加失去最终的预测后果。 返回最终的预测后果。二、优缺点长处:高准确性:GBDT可能失去十分高的准确性,在许多机器学习问题中体现良好。鲁棒性:GBDT对于输出数据的异样值和噪声具备很强的鲁棒解决缺失值和高维特色:GBDT算法可能很好地解决缺失值和高维特色,这是因为决策树能够依据特色的取值将样本分成不同的子集,从而防止了对缺失值的解决。解释性:GBDT算法生成的决策树具备很好的可解释性,能够帮忙咱们了解模型的决策过程。毛病:计算工夫长:GBDT须要训练多个决策树模型,并且每一轮迭代都须要计算梯度和Hessian矩阵,因而训练工夫较长。容易过拟合:GBDT容易过拟合,特地是在训练集的噪声较大或者数据量较小的状况下,须要进行一些正则化解决。三、理论利用排序:学习排序模型,比方搜索引擎中的网页排序、广告举荐零碎中的广告排序等。回归:回归问题,比方房价预测、股票价格预测等。分类:分类问题,比方垃圾邮件分类、用户行为剖析等。举荐零碎:用于举荐零碎,比方基于用户历史行为数据和商品属性数据来预测用户对商品的偏好水平。四、常见的GBDT 变体XGBoost:eXtreme Gradient Boosting(XGBoost)是GBDT算法的一种扩大,它在原始GBDT算法的根底上增加了正则化项和自定义损失函数,进步了模型的泛化性能和精度,特地实用于解决大规模数据集和高维特色。LightGBM:LightGBM是一种基于决策树的梯度晋升框架,它采纳基于直方图的决策树算法和多线程并行计算,具备更快的训练速度和更低的内存占用,特地实用于大规模数据集。CatBoost:CatBoost是一种基于决策树的梯度晋升框架,它采纳对称二叉树构造和分类变量特色解决技术,可能自适应地学习特色交互关系,进步模型的准确性和泛化性能,特地实用于解决具备大量分类特色的数据集五、代码应用 python 和 Scikit-learn库 from sklearn.ensemble import GradientBoostingClassifier# 创立GBDT分类器模型gbdt = GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100, max_depth=3)# 训练模型gbdt.fit(X_train, y_train)# 应用模型进行预测y_pred = gbdt.predict(X_test)# 评估模型性能accuracy = gbdt.score(X_test, y_test)留神:在理论利用中,咱们须要对数据进行预处理、特色工程等步骤,并应用穿插验证等技术来评估模型性能,咱们也能够应用其余GBDT库或本人实现GBDT算法,以满足不同的利用需要。 六、总结GBDT算法尽管可能自适应地学习特色交互关系,但它依然须要依赖人工抉择或结构特色。在理论利用中,咱们须要联合特色工程技术来提取更有用的特色,从而进一步提高模型的性能。后续文章我也会写到这几种变体。

February 17, 2023 · 1 min · jiezi

关于机器学习:懂九转大肠的微软New-Bing-内测申请教程

最近微软的New Bing凋谢内测了,网上曾经有拿到内测资格的大佬们比照了ChatGPT和New Bing。比照后果是New Bing比ChatGPT更弱小。来看看具体比照例子吧 1.时效性更强ChatGPT的库比拟老,跟不上时事,比方你问它九转大肠的梗,ChatGPT齐全不能了解,而New Bing能给出精确的答复 New Bing能了解九转大肠的梗 New Bing甚至能了解小黑子的梗 2.答复范畴更广ChatGPT答复不了的问题,New Bing却能答复 3.答复更精确相比拟ChatGPT的胡言乱语,New Bing的答复更加标准以及精确 4.内测资格申请教程看了这么多,你是不是也心痒痒想连忙体验体验了啊。当初小卷来教大家怎么申请内测资格 4.1 第一步New Bing是微软开发的,天然要用微软的Edge浏览器申请。关上Edge浏览器,在扩大中关上 获取Microsoft Edge加载项 第二步关上插件商店后,搜寻插件 ModHeader, 而后点击获取 装置 第三步装置好后,浏览器右上角点击插件的图标,关上界面,输出代理地址: X-Forwarded-For 4.2.2.2 第四步最初,关上New Bing的内测申请地址:https://www.bing/com.new (不要开VPN),登录微软账号(没有的自行注册),点击申请内测按钮,点完后显示 您已退出候补名单 代表申请胜利了

February 16, 2023 · 1 min · jiezi

关于机器学习:ECCV-2022高效视频学习框架-EVLCLIP-助力视频识别

出品人:Towhee 技术团队 顾梦佳 视频辨认始终以端到端的学习范式为主,即首先应用预训练图像模型的权重初始化视频辨认模型,而后用视频进行端到端训练。尽管这种形式使得视频网络可能从预训练的图像模型中受害,然而它须要大量的计算和内存资源来微调视频模型。另外,如果间接应用预训练好的图像模型而不通过微调骨干网络,这样取得的图像特色会导致最终的视频网络后果不佳。侥幸的是,CLIP 最近的停顿为视觉辨认工作的新门路铺平了路线。这些模型在大型凋谢词汇图像-文本对数据上进行了预训练,学习了具备丰盛语义的弱小视觉示意。在此基础上,高效视频学习框架 EVL 可能间接训练具备解冻 CLIP 特色的高质量视频辨认模型。宽泛的试验证实了 EVL 的有效性,并发现它是一种简略无效的流水线,具备更高的准确性,同时升高了训练和推理老本。 EVL ArchitectureEVL 设计了一种无效的迁徙学习办法,可能利用解冻的 CLIP 图像特色进行视频辨认。为了从 CLIP 图像编码器动静收集帧级空间特色,该框架采纳了一个轻量级的 Transformer 解码器并学习了一个查问 token。此外,它在每个解码器层中采纳了部分工夫模块,以便发现来自相邻帧及其注意力图的工夫线索。最初,模型应用全连贯层来预测视频类别的分数。 相干材料: 代码地址:https://github.com/opengvlab/...论文链接:Frozen CLIP Models are Efficient Video Learners更多材料:ECCV2022|港中文MM Lab证实Frozen的CLIP 模型是高效视频学习者

February 16, 2023 · 1 min · jiezi

关于机器学习:机器学习随机森林

前言随机森林(Random Forest)是一种基于决策树的集成学习办法,它通过构建多个决策树来进步预测准确性和稳定性。在本文中,咱们将介绍随机森林的原理、长处和毛病,以及它在机器学习中的利用。 原理随机森林是由多个决策树组成的集成学习模型。它的核心思想是通过构建多个决策树来进步预测准确性和稳定性。每个决策树都是基于随机样本和随机特色构建的,这种随机性使得随机森林可能防止过拟合,并且具备很好的鲁棒性。 随机森林的训练过程能够分为以下几个步骤: (1)随机抉择一部分数据样本,构建决策树。 (2)随机抉择一部分特色,构建决策树。 (3)反复上述步骤,构建多个决策树。 (4)通过投票的形式,将多个决策树的预测后果合并为最终后果。 数学知识决策树:随机森林的根本组成部分是决策树,决策树是一种树形构造,它的节点代表一个特色,边代表特色之间的关系,每个叶子节点代表一个类别或一个数值。基尼不纯度和熵:在构建决策树时,须要抉择最优特色进行划分,而基尼不纯度和熵是两种罕用的衡量标准。基尼不纯度掂量的是随机抉择两个样本,其类别不统一的概率,熵掂量的是随机抉择一个样本,它所属类别的不确定性。集成学习:随机森林是一种集成学习办法,它将多个决策树组合起来进行预测,以进步预测准确性和泛化能力。集成学习波及到一些数学实践,如概率论、统计学、优化实践等。随机化:随机森林中的随机化包含两个方面,一个是随机抉择训练样本,另一个是随机抉择特色。这些随机化技术有助于减小过拟合,进步模型的泛化能力。随机森林的优缺点长处(1)准确性高:因为随机森林能够利用多个决策树进行预测,因而其预测准确性比单个决策树更高。 (2)可解决大量的输出特色:随机森林能够解决大量的输出特色,因而能够用于高维数据的分类和回归问题。 (3)具备很好的鲁棒性:因为随机森林的构建过程具备随机性,因而它能够很好地解决噪声数据和缺失数据。 (4)不易过拟合:随机森林的构建过程中应用了随机样本和随机特色,这种随机性能够防止过拟合的问题。 毛病(1)复杂度高:随机森林中蕴含多个决策树,因而它的计算复杂度较高。 (2)须要大量的训练数据:随机森林须要大量的训练数据能力达到较好的预测成果。 (3)难以解释:因为随机森林是由多个决策树组成的,因而其后果难以解释。 利用(1)分类和回归问题:随机森林能够用于分类和回归问题,包含图像分类、语音辨认、自然语言解决等。 (2)特征选择:随机森林能够通过计算特色重要性来进行特征选择,以进步预测准确性和升高计算复杂度。 (3)异样检测:随机森林能够用于异样检测,包含网络入侵检测、金融欺诈检测等。 (4)数据集成:随机森林能够用于将多个数据集成为一个模型,以进步预测准确性。 代码from sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_iris# 加载鸢尾花数据集iris = load_iris()X = iris.datay = iris.target# 将数据集分成训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 构建随机森林分类器rf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)# 训练随机森林模型rf.fit(X_train, y_train)# 在测试集上评估随机森林模型score = rf.score(X_test, y_test)# 打印准确率print("Accuracy:", score)这个代码应用load_iris()函数加载了鸢尾花数据集,并将数据集分成训练集和测试集。而后,咱们应用RandomForestClassifier类构建了一个随机森林分类器,其中n_estimators参数示意构建的决策树数量,max_depth参数示意决策树的最大深度。接着,咱们应用fit()办法对随机森林模型进行训练并应用score()办法在测试集上评估模型的准确率。最初,咱们打印出模型的准确率。

February 16, 2023 · 1 min · jiezi

关于机器学习:CSC3002-计算机科学

CSC3002: Introduction to Computer ScienceAssignment 2Assignment description:You should write your code for each question in several .cpp and .h file. Please pack your wholeproject (or source files are acceptable) into a single .zip file, name it using your student ID(e.g. if your student ID is 123456, then the file should be named as 123456.zip), and then submitthe .zip file via BB. For this assignment, it is not necessary to use the sample project. You cancreate an empty project with QT Creater to start programming. Please note that, the teachingassistant may ask you to explain the meaning of your program, to ensure that the codes areindeed written by yourself. Please also note that we may check whether your program is toosimilar to your fellow students’ code using BB. Please refer to the BB system for theassignment deadline. For each day of late submission, you will obtain late penalty in theassignment marks. If you submit more than three days later than the deadline, you will receivezero in this assignment. Detailed description on assignment requirement is stated in the lastfew pages.Exercise 1: Area CodesP258(266) No.19, 201.1 Telephone numbers in the United States and Canada are organized into various three-digitarea codes. A single state or province will often have many area codes, but a single area code willnot cross a state boundary. This rule makes it possible to list the geographical locations of eacharea code in a data file. For this problem, assume that you have access to the file AreaCodes.txt,which lists all the area codes paired with their locations as illustrated by the first few lines of thatfile:Using the AirportCodes program as a model, write the code necessary to read this file into aMap<int,string> , where the key is the area code and the value is the location. Once you’ve readin the data, write a main program that repeatedly asks the user for an area code and then looksup the corresponding location, as illustrated in the following sample run:As the prompt suggests, however, your program should also allow users to enter the name of astate or province and have the program list all the area codes that serve that area, as illustratedby the following sample run:1.2 When you wrote the FindAreaCode program for the previous exercise, it is likely that yougenerated the list of area codes for a state by looping through the entire map and printing outany area codes that mapped to that state. Although this strategy is fine for small maps like thearea code example, efficiency will become an issue in working with much larger data maps.An alternative approach is to invert the map so that you can perform lookup operations ineither direction. You can't, however, declare the inverted map as a Map<string, int> , becausethere is often more than one area code associated with a state. What you need to do instead is tomake the inverted map a Map<string, Vector> that maps each state name to a vector of thearea codes that serve that state. Rewrite the FindAreaCode program so that it creates aninverted map after reading in the data file and then uses that map to list the area codes for astate.Requirement for 1.1:/* ...

February 16, 2023 · 8 min · jiezi

关于机器学习:297个机器学习彩图知识点11

导读本系列将继续更新20个机器学习的知识点,欢送关注。1. 单边标签平滑 2. 逻辑回归 3. 最小二乘法 4. 袋外数据误差 5. 外核 6. 异样值 7. 过拟合&欠拟合 8. 适度拟合 9. 正则化的参数范数惩办 10. 参数共享 11. 参数&超参数 12. 不确定性的起源 13. 夹角 14. 稠密性 15. 平方根 16. 标准差 17. 均值的规范误 18. 标准化 19. 驻点 20. 词根 本文由mdnice多平台公布

February 15, 2023 · 1 min · jiezi

关于机器学习:Blender的布局和工作区

如果您想开始涉足 3D 设计和动画,Blender 是您须要理解的工具。以下是如何开始。因为易用性和可拜访性的倒退,3D 图形软件正迅速成为艺术家武器库中的规范工具。Blender是一款收费的开源软件,可用于创立动静图形、动画、视觉效果、合成、数字插图和设计。随着应用该平台的定期更新和蓬勃发展的艺术家和动画师社区,当初是尝试它的最佳时机。 本文将钻研根本的 Blender 布局、空间和工作区。它将为您提供基础知识,以进一步深入研究 Blender 提供的令人兴奋的可能性。 导航 Blender 的界面当您关上 Blender 时,您会看到一个启动画面,容许您加载现有我的项目或创立新我的项目。您有一组可用于新我的项目的预设: General、 2D Animation、Sculpting、VFX和 Video Editing。 在本例中,咱们将抉择General工作区。默认状况下,这会关上一个带有相机和立方体对象的新我的项目。 默认布局提供了一个工作区,该工作区由一个主 3D 视口(您在其中挪动和查看 3D 空间中的作品的窗口)以及 屏幕底部的时间轴组成,用于解决关键帧、模仿和动画。实现设置是 右上角的 纲要面板,具体阐明场景中的所有对象和资产。同时,右下角的 属性面板容许您调整各种设置和参数。 这是最根本的布局。其余可用的面板和窗口包含用于关键帧、暗影、节点、图像编辑等的更具体的设置和工具。当初,让咱们保持默认设置。3D 视口控件在3D 视口窗口中,有许多键和鼠标命令能够在 3D 空间中平滑精确地挪动。这须要一些练习,但把握这些将使应用 Blender 变得更加容易。 请记住,能够通过返回屏幕顶部的“编辑”选项卡,而后按 “首选项”>“输出”来自定义所有控件 。如果您应用的是笔记本电脑并且无奈应用鼠标,您可能心愿在同一地位启用 Emulate 3 Button Mouse,这将容许您模仿右键单击和鼠标中键。 3D 视口模式在3D视口能够的六种模式,所有这些都能够关上一系列取决于你想要做什么工具和性能的默认之间进行切换。 以下是每种模式的简要概述:对象模式 容许您绝对于彼此挪动场景中的对象并为其设置动画。编辑模式可让您操纵单个对象的形态、大小和外观。 它还容许您通过点、面或边操作多边形。雕刻模式 具备一系列雕刻工具,可让您将对象操纵和扭曲成不同的形态。Vertex Paint、Weight Paint和Texture Paint都提供了为对象增加色彩和纹理的不同办法。粒子编辑和 姿态 也能够在解决特定对象(例如骨架或具备头发粒子系统的对象)时变得可用。然而,这些模式比较复杂,本文不波及。 在 3D 视口中挪动要在 3D 查看器中平移,请在鼠标挪动的同时按住鼠标中键 或滚动按钮。要平移,请按住Shift并应用鼠标中键或滚动按钮。要放大和放大场景,您能够应用鼠标滚动或按住Ctrl (Windows) 或 CMD (macOS),同时按住 鼠标中键或滚动按钮。 ...

February 15, 2023 · 1 min · jiezi

关于机器学习:机器学习决策树

前言决策树是一种罕用的机器学习算法,用于分类和回归问题。其次要思维是依据已知数据构建一棵树,通过看待分类或回归的样本进行逐渐的特色判断,最终将其分类或回归至叶子节点要害概念节点:决策树由许多节点组成,其中分为两种类型:外部节点和叶子节点。外部节点示意某个特色,而叶子节点示意某个类别或回归值。分支:每个外部节点连贯着一些分支,每个分支代表着某个特色取值,示意样本在该特色上的取值。根节点:决策树的根节点是整棵树的终点,即第一个判断特色的节点。决策规定:决策树的每个节点示意一条决策规定,即对某个特色的判断,其决策规定是由已知数据集计算而得的。剪枝:决策树为了防止适度拟合(Overfitting),通常会在构建好树之后进行剪枝操作,即去掉一些决策规定,以防止模型过于简单。实现流程数据预处理:将原始数据转换成决策树可解决的数据格式。对于分类问题,须要将类别变量编码为数字;对于连续变量,须要进行离散化解决。特征选择:从所有可用的特色中抉择一个最佳的特色,用于划分数据集。罕用的特征选择算法有信息增益、信息增益比和基尼指数等。决策树的构建:将数据集递归地划分成越来越小的子集,直到数据集不能再被划分,或者达到预约的进行条件。在每个节点上抉择最佳的特色,将数据集划分成两个子集,并在子集上递归地执行此过程,直到子集不能再被划分。剪枝:为了防止过拟合,能够在构建完整棵树之后,对决策树进行剪枝。剪枝分为预剪枝和后剪枝两种办法。预剪枝是在决策树构建过程中,通过限度树的深度、节点数或其余条件,防止过拟合。后剪枝是在决策树构建实现之后,通过对子树进行剪枝,来缩小决策树的复杂度。决策树的评估:通过测试集或穿插验证等办法,对决策树的性能进行评估。评估指标包含准确率、准确率、召回率、F1分数等。预测:将待预测的样本顺次从根节点开始进行判断,依照决策规定向下挪动,直到达到某个叶子节点,将样本归类于该叶子节点所代表的类别。决策树优缺点长处:可解释性强:决策树模型的生成过程相似人类决策的过程,易于了解和解释,可帮忙决策者理解数据特色、属性间的关系和决策规定,有助于对数据的深入分析和开掘。适用性广:决策树算法不须要对数据做过多的前置解决,如特色缩放、归一化等,能够间接解决离散或连续型的数据,且不受数据分布的影响,实用于各种类型的数据和问题。可解决缺失值和异样值:决策树算法能够解决缺失值和异样值,因为在决裂节点时只需思考以后样本的特征值,而不须要思考其余样本的特征值。速度快:决策树的训练和预测速度都很快,因为它的断定过程非常简单,只需对每个特色进行一次比拟,所以工夫复杂度为 O(n),其中 n 示意样本数量。毛病:容易过拟合:决策树的划分过程是基于训练数据的,因而容易呈现过拟合景象,导致模型泛化能力差。能够通过剪枝、限度树的深度、减少样本数等办法来解决过拟合问题。不稳定性高:因为数据的渺小变动可能导致树结构的大幅变动,所以决策树的稳定性较差,须要采纳集成学习等办法来进步稳定性。对间断值解决不好:决策树算法对连续型变量的解决不如对离散型变量的解决好,须要对连续型变量进行离散化解决。高度依赖数据品质:决策树算法须要有足够的样本数据和较好的数据品质,否则容易呈现欠拟合和过拟合等问题,影响模型的性能。典型的决策树算法ID3算法:ID3(Iterative Dichotomiser 3)算法是决策树算法中最早的一种,应用信息增益来抉择最优特色。ID3算法基于贪婪思维,始终抉择以后最优的特色进行宰割,直到数据集宰割实现或没有特色可宰割为止。C4.5算法:C4.5算法是ID3算法的改进版,应用信息增益比来抉择最优特色。C4.5算法对ID3算法中存在的问题进行了优化,包含解决缺失值、解决间断值等。CART算法:CART(Classification and Regression Trees)算法是一种基于基尼不纯度的二叉树构造分类算法,用于解决二分类和回归问题。CART算法能够解决间断值和离散值的特色,可能生成二叉树构造,具备较好的可解释性。CHAID算法:CHAID(Chi-square Automatic Interaction Detection)算法是一种基于卡方测验的决策树算法,用于解决分类问题。CHAID算法可能解决多分类问题,不须要事后对特色进行解决。MARS算法:MARS(Multivariate Adaptive Regression Splines)算法是一种基于样条插值的决策树算法,用于回归问题。MARS算法可能解决间断值和离散值的特色,可能生成非二叉树构造,具备较好的拟合能力。代码基于Python的简略决策树实现,以Iris数据集为例: from sklearn.datasets import load_irisfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score# 加载数据集iris = load_iris()X = iris.datay = iris.target# 划分数据集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 构建决策树clf = DecisionTreeClassifier()clf.fit(X_train, y_train)# 预测y_pred = clf.predict(X_test)# 评估性能accuracy = accuracy_score(y_test, y_pred)print("Accuracy: ", accuracy)

February 15, 2023 · 1 min · jiezi

关于机器学习:特定领域知识图谱融合方案文本匹配算法之预训练SimbertERNIEGram单塔模型等诸多模型三

特定畛域常识图谱交融计划:文本匹配算法之预训练模型SimBert、ERNIE-Gram文本匹配工作在自然语言解决中是十分重要的根底工作之一,个别钻研两段文本之间的关系。有很多利用场景;如信息检索、问答零碎、智能对话、文本甄别、智能举荐、文本数据去重、文本类似度计算、自然语言推理、问答零碎、信息检索等,但文本匹配或者说自然语言解决依然存在很多难点。这些自然语言解决工作在很大水平上都能够形象成文本匹配问题,比方信息检索能够归结为搜索词和文档资源的匹配,问答零碎能够归结为问题和候选答案的匹配,复述问题能够归结为两个同义句的匹配。 0.前言:特定畛域常识图谱交融计划本我的项目次要围绕着特定畛域常识图谱(Domain-specific KnowledgeGraph:DKG)交融计划:文本匹配算法、常识交融学术界计划、常识交融业界落地计划、算法测评KG生产品质保障解说了文本匹配算法的综述,从经典的传统模型到孪生神经网络“双塔模型”再到预训练模型以及有监督无监督联结模型,期间也波及了近几年前沿的比照学习模型,之后提出了文本匹配技巧晋升计划,最终给出了DKG的落地计划。这边次要以原理解说和技术计划论述为主,之后会缓缓把我的项目开源进去,一起共建KG,从常识抽取到常识交融、常识推理、品质评估等争取走通残缺的流程。 0.1 前置参考我的项目前置参考我的项目 1.特定畛域常识图谱交融计划:技术常识前置【一】-文本匹配算法 https://blog.csdn.net/sinat_39620217/article/details/128718537 2.特定畛域常识图谱交融计划:文本匹配算法Simnet、Simcse、Diffcse【二】 https://blog.csdn.net/sinat_39620217/article/details/128833057 3.特定畛域常识图谱交融计划:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】 https://blog.csdn.net/sinat_39620217/article/details/129026570 4.特定畛域常识图谱交融计划:学以致用-问题匹配鲁棒性评测较量验证【四】https://blog.csdn.net/sinat_39620217/article/details/129026193 NLP常识图谱我的项目合集(信息抽取、文本分类、图神经网络、性能优化等) https://blog.csdn.net/sinat_39620217/article/details/128805154 2023计算机领域顶会以及ACL自然语言解决(NLP)钻研子方向汇总 https://blog.csdn.net/sinat_39620217/article/details/128897539 0.2 论断先看仿真后果如下: 模型dev accSimcse(无监督)58.97%Diffcse(无监督)63.23%bert-base-chinese86.53%bert-wwm-chinese86.33%bert-wwm-ext-chinese86.05%ernie-tiny86.07%roberta-wwm-ext87.53%rbt385.37%rbtl385.17%ERNIE-1.0-Base89.34%ERNIE-1.0-Base89.34%ERNIE-Gram-Base-Pointwise90.58%SimCSE 模型适宜不足监督数据,然而又有大量无监督数据的匹配和检索场景。相比于 SimCSE 模型,DiffCSE模型会更关注语句之间的差异性,具备准确的向量示意能力。DiffCSE 模型同样适宜不足监督数据,然而又有大量无监督数据的匹配和检索场景。显著看到有监督模型中ERNIE-Gram比之前所有模型性能的优良1.SimBERT(UniLM) 预训练模型依照训练形式或者网络结构能够分成三类: 一是以BERT[2]为代表的自编码(Auto-Encoding)语言模型,Autoencoding Language Modeling,自编码语言模型:通过上下文信息来预测以后被mask的token,代表有BERT、Word2Vec(CBOW)等.它应用MLM做预训练任务,自编码预训模型往往更善于做判断类工作,或者叫做自然语言了解(Natural Language Understanding,NLU)工作,例如文本分类,NER等。$p(x)=\prod_{x \in \text { Mask }} p(x \mid$ content $)$ 毛病:因为训练中采纳了[MASK]标记,导致预训练与微调阶段不统一的问题,且对于生成式问题的反对能力较差长处:可能很好的编码上下文语义信息,在自然语言了解(NLU)相干的上游工作上体现突出 二是以GPT[3]为代表的自回归(Auto-Regressive)语言模型,Aotoregressive Lanuage Modeling,自回归语言模型:依据后面(或前面)呈现的token来预测以后时刻的token,代表模型有ELMO、GTP等,它个别采纳生成类工作做预训练,相似于咱们写一篇文章,自回归语言模型更善于做生成类工作(Natural Language Generating,NLG),例如文章生成等。$\begin{aligned} & \text { forward: } p(x)=\prod_{t=1}^T p\left(x_t \mid x_{<t}\right) \\ & \text { backward : } p(x)=\prod_{t=T}^1 p\left(x_t \mid x_{>t}\right)\end{aligned}$ 毛病:只能利用单向语义而不能同时利用上下文信息长处:对自然语言生成工作(NLG)敌对,合乎生成式工作的生成过程 三是以encoder-decoder为根底模型架构的预训练模,例如MASS[4],它通过编码器将输出句子编码成特征向量,而后通过解码器将该特征向量转化成输入文本序列。基于Encoder-Decoder的预训练模型的长处是它可能兼顾自编码语言模型和自回归语言模型:在它的编码器之后接一个分类层便能够制作一个判断类工作,而同时应用编码器和解码器便能够做生成类工作。这里要介绍的对立语言模型(Unified Language Model,UniLM)[1]从网络结构上看,它的构造是和BERT雷同的编码器的构造。然而从它的预训练任务上来看,它不仅能够像自编码语言模型那样利用掩码标记的上下文进行训练,还能够像自回归语言模型那样从左向右的进行训练。甚至能够像Encoder-Decoder架构的模型先对输出文本进行编码,再从左向右的生成序列。 ...

February 14, 2023 · 8 min · jiezi

关于机器学习:机器学习朴素贝叶斯

前言奢侈贝叶斯是一种基于贝叶斯定理的分类算法,属于生成式模型的领域。它的根本思维是基于贝叶斯定理和特色独立性假如。它假如每个特色之间互相独立,因而名称为“奢侈”。在奢侈贝叶斯分类中,咱们假如给定数据点属于某个类别,能够通过对该类别中各个特色的条件概率进行乘积计算,以计算该数据点属于该类别的概率。最终,抉择概率最大的类别作为该数据点的预测类别。公式贝叶斯定理:贝叶斯定理通知咱们如何计算某个事件产生的概率,即: $P(A|B) = P(B|A) * P(A) / P(B)$ 其中,P(A|B) 示意事件 A 在事件 B 产生的状况下产生的概率;P(B|A) 示意事件 B 在事件 A 产生的状况下发 生的概率;P(A) 示意事件 A 产生的概率;P(B) 示意事件 B 产生的概率 2.特色独立性假如:奢侈贝叶斯假如特色之间是独立的,即: $P(x1, x2, ..., xn | y) = P(x1 | y) * P(x2 | y) * ... * P(xn | y)$ 其中,xi 示意第 i 个特色,y 示意分类后果。 极大似然预计:奢侈贝叶斯应用极大似然预计来确定特色与分类后果之间的关系,即: $P(y | x1, x2, ..., xn) = P(x1, x2, ..., xn | y) * P(y) / P(x1, x2, ..., xn)$ ...

February 14, 2023 · 2 min · jiezi

关于机器学习:机器学习算法随机森林

在经典机器学习中,随机森林始终是一种灵丹妙药类型的模型。 该模型很棒有几个起因: 与许多其余算法相比,须要较少的数据预处理,因而易于设置充当分类或回归模型不太容易适度拟合能够轻松计算特色重要性在本文中,我想更好地了解形成随机森林的组件。为实现这一点,我将把随机森林解构为最根本的组成部分,并解释每个计算级别中产生的事件。到最初,咱们将对随机森林的工作原理以及如何更直观地应用它们有更深刻的理解。咱们将应用的示例将侧重于分类,但许多准则也实用于回归场景。 1. 运行随机森林让咱们从调用经典的随机森林模式开始。这是最高级别,也是许多人在用 Python 训练随机森林时所做的。 如果我想运行随机森林来预测我的指标列,我只需执行以下操作 from sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.2, random_state=0)# Train and score Random Forest simple_rf_model = RandomForestClassifier(n_estimators=100, random_state=0)simple_rf_model.fit(X_train, y_train)print(f"accuracy: {simple_rf_model.score(X_test, y_test)}")# accuracy: 0.93运行随机森林分类器非常简单。我刚刚定义了 n_estimators 参数并将 random_state 设置为 0。我能够依据集体教训通知你,很多人只会看着那个 .93 ,很快乐,而后在野外部署那个货色。 simple_rf_model = RandomForestClassifier(n_estimators=100, random_state=0)随机状态是大多数数据迷信模型的一个特色,它确保其他人能够重现你的工作。咱们不会太放心那个参数。 让咱们深刻理解一下 n_estimators。如果咱们看一下 scikit-learn 文档,定义是这样的: 森林中树木的数量。2. 考察树木的数量在这一点上,让咱们更具体地定义随机森林。随机森林是一种集成模型,它是许多决策树的共识。该定义可能不残缺,但咱们会回来探讨它。 这可能会让您认为,如果将其合成为如下内容,您可能会失去一个随机森林: # Create decision treestree1 = DecisionTreeClassifier().fit(X_train, y_train)tree2 = DecisionTreeClassifier().fit(X_train, y_train)tree3 = DecisionTreeClassifier().fit(X_train, y_train)# predict each decision tree on X_testpredictions_1 = tree1.predict(X_test)predictions_2 = tree2.predict(X_test)predictions_3 = tree3.predict(X_test)print(predictions_1, predictions_2, predictions_3)# take the majority rulesfinal_prediction = np.array([np.round((predictions_1[i] + predictions_2[i] + predictions_3[i])/3) for i in range(len(predictions_1))])print(final_prediction)在下面的例子中,咱们在 X_train 上训练了 3 棵决策树,这意味着 n_estimators = 3。在训练完这 3 棵树之后,咱们在同一测试集上预测每棵树,而后最终采纳 3 棵树中的 2 棵树进行预测。 ...

February 13, 2023 · 5 min · jiezi

关于机器学习:ECOM151大数据算法

ECOM151: Big Data Applications in FinanceIndividual AssignmentVimal Balasubramaniam25 February 2020DetailsGrading: 20% of your final grade.Deadline: 31 March, 2020. Time: 22:00hrs.Submission mode: QMplusSubmission files: 1) An assignment results.R file, and 2) A “Prediction Report” with maximum of5-pages with the interpretation of your results.Please refrain from copying code from each other. Your code and output submission will provideus sufficient information to detect such practices and it will be penalized.What am I grading you on?I am looking to test your ability to use models learned during the first half of the course to bothapply it to real data and to synthesize insights into a report.This assignment requires you to apply all the skills learned during your first half of the term,and the models learned during the lectures. Your ability to estimate the model is only half of thechallenge. Your interpretation of the findings matter equally.1Can I ask assignment related questions during office hours?The questions that your TA and I will answer are only to clarify the meaning of a question. Wewill not provide any clue on whether what you are doing is “right”, or “wrong”, or suggest ways toimprove your code. However, if you have doubts on estimating a model, we then ask you to phraseyour questions on the tutorial datasets and models, so that we are able to provide guidance.The dataset provided to you should not have many challenges to resolve before you estimate amodel. However, if you face any challenges while using the data on Rstudio.cloud, do reach out tous. I strongly recommend that you work on your assignment in your computer, and not on the cloudso that you have complete control over the file. Any excuses that the file was not “saved”, or went“missing” on the cloud will not be entertained.Submission filesYou are expected to create an R file as part of your submission. The R file should be selfcontained,i.e., I should be able to run the code on my computer loading the same datafile withoutany error.In addition to all your code, you are expected to store your answers in objects named asspecifically instructed in each question. The name of object is provided in blue colour next to eachquestion. All “R objects” or columns in objects will also be referred in blue in the text below.In addition to the R code, you are expected to create a PDF submission of no more than 5 pages,that present your evaluation of the models.The AssignmentLendingClub is an American peer-to-peer lending company, currently the world’s largestplatform that allows for individuals to both invest and borrow on the platform. Borrowers can obtainunsecured personal loans from the platform, and this assignment is set up for you to assess yourability to predict defaulters in the data using the predictors provided in the data.The data is a random sample of loans issued on the platform between 2007−2015, including2the loan status, and payment information. The data also contains a number of predictors that havebeen documented in the variables description file provided to you named “ECOM151-AssignmentVariableDescription.xlsx”.For tractability, your assignment focuses only on a small set of variablesavailable for prediction.You have been provided with on RData file named “ECOM151-Assignment-Data.rda” thatcontain three objects:trainData: This is the dataset on which you will train all your models.testData: This is the dataset on which you will evaluate your model’s fit.varDescription: This is a replication of the variable description available in the excel spreadsheetprovided to you.Question A (10 points)This question expects you to estimate five different class of models to identify the best model topredict default on the LendingClub platform.Set up the dataLoad the RData file provided to you on to your work environment.Questions: ...

February 13, 2023 · 7 min · jiezi

关于机器学习:机器学习SVM

前言SVM(反对向量机)是一种罕用的机器学习算法,用于分类和回归剖析。它的次要目标是寻找一个最优超平面,将不同属性的数据分成不同的类别。SVM是一种无效的分类器,因为它能够解决高维数据,并且能够应用核函数解决非线性可分的数据。SVM思维它的核心思想是通过将数据映射到高维空间来找到一个最优的超平面。SVM通过找到反对向量来定义最优超平面。反对向量是最靠近超平面的数据点,它们对于定义超平面的地位和方向起着重要的作用。因而,SVM寻找最优超平面的过程能够简化为找到可能最大化反对向量到最优超平面的间隔的超平面。SVM流程数据预处理 在应用SVM之前,须要对数据进行预处理,包含数据荡涤、特征选择和特征提取等。此外,还须要将数据分为训练集和测试集。 特色映射 SVM的核心思想是通过将数据映射到高维空间来找到一个最优的超平面。因而,在这一步中,须要将数据通过核函数进行映射,将原始数据映射到高维空间。 寻找最优超平面 在映射到高维空间后,SVM须要寻找一个最优的超平面,将数据分成不同的类别。为了找到最优超平面,须要确定一些参数,如C(惩办系数)和(核函数的参数),以最大化分类器的准确性。 分类 在训练好分类器后,须要应用测试数据集对分类器进行测试,并计算分类器的准确率和召回率等指标。 SVM优缺点长处 高维数据处理能力:SVM能够很好地解决高维数据,并且能够应用核函数解决非线性可分的数据,因而实用于解决许多理论问题。鲁棒性:SVM对于噪声数据有很好的解决能力,因为它只关注最靠近超平面的数据点。实用于小样本:SVM只须要找到反对向量而不是所有的数据点,因而实用于解决小样本问题。可调参数:SVM具备许多可调参数,如C(惩办系数)和(核函数的参数),以最大化分类器的准确性。毛病 计算复杂度高:在解决大规模数据时,SVM的计算复杂度较高,因而训练工夫较长。须要抉择适当的核函数:抉择适当的核函数对于SVM的性能十分重要,但这往往须要进行肯定的试验和调整。对缺失数据敏感:SVM对于缺失数据比拟敏感,因而须要在预处理数据时进行解决。总结 SVM在解决高维数据和非线性数据时表现出色,并且对于噪声数据和小样本问题也有很好的成果。然而,SVM的计算复杂度较高,并且须要抉择适当的核函数,因而在理论利用中须要认真思考其优缺点,以抉择适合的机器学习算法。底层代码实现import numpy as npclass SVM: def __init__(self, learning_rate=0.01, lambda_param=0.01, n_iters=1000): self.lr = learning_rate # 学习率 self.lambda_param = lambda_param # 正则化参数 self.n_iters = n_iters # 迭代次数 self.w = None # 参数w self.b = None # 参数b def fit(self, X, y): n_samples, n_features = X.shape # 将标签y转换为{-1, 1},便于后续计算 y_ = np.where(y <= 0, -1, 1) self.w = np.zeros(n_features) # 初始化参数w为全零向量 self.b = 0 # 初始化参数b为0 # 应用梯度降落法求解最优参数w和b for _ in range(self.n_iters): for idx, x_i in enumerate(X): condition = y_[idx] * (np.dot(x_i, self.w) - self.b) >= 1 # 判断样本点是否位于Margin之内 if condition: self.w -= self.lr * (2 * self.lambda_param * self.w) # 如果在Margin之内,更新参数w else: self.w -= self.lr * (2 * self.lambda_param * self.w - np.dot(x_i, y_[idx])) # 如果在Margin之外,更新参数w和b self.b -= self.lr * y_[idx] # 更新参数b def predict(self, X): approx = np.dot(X, self.w) - self.b # 计算样本点到超平面的间隔 return np.sign(approx) # 返回样本点的类别,即其符号在__init__函数中,定义了学习率、正则化参数和迭代次数等超参数。 ...

February 13, 2023 · 1 min · jiezi

关于机器学习:TVM-学习资料用-Schedule-模板和-AutoTVM-优化算子

残缺 TVM 中文文档,拜访→TVM 中文站作者:Lianmin Zheng,Chris Hoge 本教程将展现如何用 TVM 张量表达式(TE)语言编写 schedule 模板,并通过 AutoTVM 对模板进行搜寻,从而找到最佳 schedule。这个主动优化张量计算的过程被称为 Auto-Tuning。 本教程基于后面的 TE 编写矩阵乘法教程 设立。 auto-tuning 包含两个步骤: 第一步:定义搜寻空间。第二步:运行搜索算法来摸索这个空间。通过本教程能够理解如何在 TVM 中执行这两个步骤。整个工作流程由一个矩阵乘法示例来阐明。 备注留神,本教程不会在 Windows 或最新版本的 macOS 上运行。如需运行,请将本教程的主体放在 if name == "__main__": 代码块中。装置依赖要在 TVM 中应用 autotvm 包,需装置一些额定的依赖。 pip3 install --user psutil xgboost cloudpickle为了让 TVM 在调优过程中运行更快,倡议应用 Cython 作为 TVM 的 FFI。在 TVM 的根目录下,执行: pip3 install --user cythonsudo make cython3当初咱们一起来看如何用 Python 代码实现。首先导入所需的包: import loggingimport sysimport numpy as npimport tvmfrom tvm import teimport tvm.testing# 模块名叫 `autotvm`from tvm import autotvmTE 的根本矩阵乘法回忆一下用 TE 进行矩阵乘法的根本实现,上面做一些扭转。将矩阵乘法放在 Python 函数定义中。简略起见,重点关注拆分的优化,将从新排序的块大小设为固定值。 ...

February 13, 2023 · 4 min · jiezi

关于机器学习:机器学习Kmeans

前言K-means是一种经典的无监督学习算法,用于对数据进行聚类。K-means算法将数据集视为具备n个特色的n维空间,并尝试通过最小化簇内平方误差的总和来将数据点划分为簇。本文将介绍K-means算法的原理、实现和利用。 定义K-means是一种无监督学习算法,用于对数据进行聚类。该算法将数据集分为K个簇,每个簇蕴含最靠近其质心的数据点。K-means算法将数据集视为具备n个特色的n维空间,并尝试通过最小化簇内平方误差的总和来将数据点划分为簇。它是一种迭代算法,通过将每个数据点调配到最近的质心并计算新的质心来迭代地改良簇的品质,直到质心不再变动或达到最大迭代次数为止。实现流程(k-means算法原理)K-means算法是一种迭代算法,其根本思维是通过将每个数据点调配到最近的质心,并计算新的质心来迭代地改良簇的品质,直到质心不再变动或达到最大迭代次数为止。具体步骤如下: 随机抉择K个点作为初始质心;计算每个数据点与K个质心的间隔;将数据点划分到间隔最近的质心所在的簇;对于每个簇,从新计算该簇内所有数据点的均值,将该均值作为新的质心;如果质心没有变动,则进行迭代。K-means算法的外围是将数据点调配到最近的质心所在的簇,这是通过计算每个数据点与K个质心的间隔来实现的。一般而言,间隔能够应用欧氏间隔、曼哈顿间隔等来计算。而每个簇的质心则是该簇内所有数据点的均值,用于示意该簇的核心地位。 K值的抉择在K-means算法中,簇的数量k是须要当时指定的。抉择适合的簇的数量十分重要。 手肘法:在不同的k值下运行K-means算法,计算每个簇的误差平方和(SSE),并将其绘制成折线图。通常会发现,随着k值的减少,SSE会逐步减小。然而,当k值减少到某个值时,SSE的降落速度会变得更加迟缓,造成一个相似手肘的拐点。该拐点所对应的k值就是比拟适合的簇的数量。轮廓系数法:轮廓系数是一种用于评估聚类后果品质的指标,其取值范畴在[-1, 1]之间。对于每个数据点,轮廓系数是其与同簇其余数据点间隔的平均值和与最近的不同簇的所有数据点的间隔的平均值之差除以两者中的较大值。聚类后果的整体轮廓系数是所有数据点的轮廓系数的平均值。较高的轮廓系数示意聚类成果较好。能够在不同的k值下运行K-means算法,计算聚类后果的整体轮廓系数,抉择轮廓系数最大的k值。教训法令:在理论利用中,能够依据数据的特点、利用场景等因素,采纳教训法令来抉择k值。例如,对于图像宰割等利用,通常抉择k值为2,对于客户分类等利用,通常抉择k值为3或4。须要留神的是,K-means算法可能陷入部分最优解,因而,抉择k值须要屡次运行算法,比拟不同的聚类后果。 创立数据该代码生成了一个蕴含1000个数据点的随机数据集,其中有4个簇,每个簇的中心点别离位于(0,0)、(3,3)、(0,3)和(3,0)。每个簇的数据点遵从正态分布。最初,用散点图可视化了数据集。能够依据须要调整数据集的大小、簇的数量、中心点的地位等参数。import numpy as npimport matplotlib.pyplot as plt# 创立数据集np.random.seed(0)n_samples = 1000centers = np.array([[0, 0], [3, 3], [0, 3], [3, 0]])X = np.zeros((n_samples, 2))for i in range(len(centers)): X[i * (n_samples // len(centers)): (i + 1) * (n_samples // len(centers)), :] = \ centers[i] + np.random.randn(n_samples // len(centers), 2)# 可视化数据集plt.scatter(X[:, 0], X[:, 1], s=10)plt.show() 实现k-means该代码承受一个数据矩阵X、簇的数量k和最大迭代次数max_iter作为输出,返回每个数据点的簇标签和最终的质心坐标。在每次迭代中,先计算每个数据点与k个质心的间隔,而后将数据点划分到间隔最近的质心所在的簇。接着,对于每个簇,从新计算该簇内所有数据点的均值,将该均值作为新的质心。最初,如果质心没有变动,则进行迭代。import numpy as npdef k_means(X, k, max_iter=100): # 随机抉择k个点作为初始质心 centroids = X[np.random.choice(len(X), k, replace=False)] for i in range(max_iter): # 计算每个数据点与k个质心的间隔 distances = np.linalg.norm(X[:, np.newaxis, :] - centroids, axis=-1) # 将数据点划分到间隔最近的质心所在的簇 labels = np.argmin(distances, axis=1) # 对于每个簇,从新计算该簇内所有数据点的均值,将该均值作为新的质心 new_centroids = np.array([X[labels == j].mean(axis=0) for j in range(k)]) # 如果质心没有变动,则进行迭代 if np.allclose(new_centroids, centroids): break centroids = new_centroids return labels, centroidsif __name__ == '__main__': labels, centroids = k_means(X=X, k=4) plt.scatter(X[labels==0, 0], X[labels==0, 1], color='r') plt.scatter(X[labels==1, 0], X[labels==1, 1], color='g') plt.scatter(X[labels==2, 0], X[labels==2, 1], color='b') plt.scatter(X[labels==3, 0], X[labels==3, 1]) plt.show() ...

February 11, 2023 · 2 min · jiezi