青海滩戮峭广告传媒有限公司!

ML.NET 的AI功能应用-文天职类

青海滩戮峭广告传媒有限公司

栏目分类
ML.NET 的AI功能应用-文天职类
发布日期:2024-07-07 09:01    点击次数:110

ML.NET 的AI功能应用-文天职类

最近,东谈主工智能 (AI) 以惊东谈主的速率越来越受接待。

OpenAI 的 ChatGPT 是东谈主工智能的挫折,眷注高涨。

ChatGPT 激励了很多公司效仿的 AI 应用趋势。

你到处皆在阅读和听到对于东谈主工智能的信息。名东谈主饰演奇怪跳摆动作的视频和图像出现,或者您听到“执行上”也曾死了几年的艺术家的采访和歌曲。

底下将讲授东谈主工智能的确实功能。看成开辟东谈主员,咱们风气于分类想考并将问题领悟为小法子,这恰是总共东谈主工智能的责任神色。它们基于所谓的模子,这些模子也曾针对各自的应用规模进行了西宾。

示例:

若是您向 ChatGPT 提取图片,则必须使用 DALL-E 等单独的模子。

若是你条目一首诗,ChatGPT 使用讲话模子。

ChatGPT 只不外是一个使用不同模子来完成手头任务的聊天机器东谈主。

这等于我想运行并编写一个微型东谈主工智能的地点,该东谈主工智能将客户驳斥(以目田文骨子式提供)分类为正面或负面。

看成 .NET 开辟东谈主员,Microsoft 提供了一个低门槛的机器学习初学 ML.NET。这个免费的开源框架不错猖獗地将 ML 模子集成到新的和现存的 .NET 应用法子中,而无需了解 Python、R 或其他 ML 库。ML.NET 已包含很多用于常见用例的现成模子,而且不错猖獗集成到现存的 .NET 应用生命周期中。

机器学习的基础常识

术语“机器学习”描述了教测度机从数据中学习格式和关系的方法,而不是使用法例和法子逻辑对它们进行显式编程。其方针是使机器八成寥寂于样本数据进行“学习”,并应用这些常识来科罚近似的问题。

基本上有三种类型的学习:

监督学习

监督学习是一种机器学习方法,其中为模子提供西宾数据,包括输入数据(举例文本)和相应的所需输出(举例“正”或“负”瓜分类)。使用这些示例,系统不错学习识别将输入与输出关连的格式。这使它八成在以后瞻望新的、看不见的输入的正确输出。一个经典的应用示例是图像中的对象识别。

例:

使用 ML.NET 进行监督学习的一个应用示例是将居品驳斥分类为“正面”或“负面”。法子如下:

// Loading the training data with reviews and labels

var data = mlContext.Data.LoadFromTextFile(pathToFile);

// Creating the processing pipeline

var pipeline = mlContext.Transforms.Text.FeaturizeText("ReviewText", "Features")

.Append(mlContext.BinaryClassification.Trainers.SdcaLogisticRegression("Label"));

// Training the model

var model = pipeline.Fit(data);

在这少量上,咱们有一个经过西宾的模子,不错对新驳斥进行分类。

无监督学习

无监督学习是一种机器学习方法,其中模子仅提供未标记的输入数据,举例文本或图像,而莫得任何关连的方针变量或分类。系统必须寥寂识别此原始数据中的结构、格式和关连性。一个典型的应用规模是聚类,其中不异的输入数据被汇总到组中。可能的示例是基于营销数据识别客户群,或者在分析文本时证实主题规模对新闻著作进行分组。

例:

无监督学习不错与文本聚类 ML.NET 一齐使用,举例:

// Loading the text data

var data = mlContext.Data.LoadFromTextFile(pathToFile);

// Create the text featurisation pipeline

var pipeline = mlContext.Transforms.Text.FeaturizeText("ArticleText", "Features");

// Train the clustering model

var model = mlContext.Clustering.Trainers.KMeans(pipeline, numberOfClusters: 5).Fit(data);

// Predict the cluster membership for new articles

var predictions = model.Transform(data);

举例,通过这种神色,新闻著作不错自动分类为政事、交易、体育等主题集群。

ML.NET 主要侧重于监督和部分无监督学习。ML.NET 现时莫得为强化学习提供任何特定的复旧,在强化学习中,东谈主工智能在模拟环境中通过奖励进行西宾。这种学习范式特地用于策略发现任务,举例游戏或经由优化。

强化学习

强化学习是一种学习范式,其中东谈主工智能在模拟环境中通过反复训诲进行西宾。与监督学习比拟,莫得具有输入输出对的完整西宾示例。相悖,系统会收到每个操作的分数(奖励),这标明该操作有多“好”。通过最大化蕴蓄的奖励,东谈主工智能学会了为任务找到最好策略。这种强化学习旨趣特地用于需要找到复杂策略的任务。例子包括棋盘游戏,如国外象棋或围棋,还有机器东谈主适度、经由优化或自动驾驶的应用。

示例:

一个经典的应用法子示例是国外象棋玩家代理。这里的环境可能是一个棋盘,可能的动作是移动动作。然后,代理财收到每步棋的评估,举例,+1 示意笃定的棋子凯旋,-5 示意行将输掉棋子。通过很多西宾游戏,东谈主工智能不错学习哪些动作不错带来永久的凯旋,从而最大猖狂地升迁其蕴蓄奖励。

修复开辟环境

若要运利用用 ML.NET,咱们需要版块 4.6.1 或更高版块的 .NET Core 或 .NET Framework 环境。ML.NET 不错在 Visual Studio、Visual Studio Code 或高歌行中使用。

第一步是装置所需的 NuGet 包 ML.NET:The first step is to install the required NuGet packages of :

Install-Package Microsoft.ML

此主包包含基本功能,举例 ML.NET 高下文、数据挽回以及包含模子和任务的目次。对于其他功能,不错添加其他包,举例用于图像处理的 Microsoft.ML.Vision 或用于推选系统的 Microsoft.ML.Recommender。

装置后,咱们不错在 Visual Studio 中创建 .NET Core 或 .NET Framework 适度台应用法子并运行开辟。

(可选)集成器具(如 Visual Studio 中的模子生成器界面或 ML.NET CLI )可用于可视化数据和创建模子。我稍后再谈这个问题。

创建第一个 ML 模子

底下,通过示例迟缓讲授 ML.NET 的基本见解:

客户驳斥的分类基于目田文本。

成果应该是将这些评级归类为正面或负面。

这是一个经典的监督学习问题。

咱们创建新的 C# 适度台应用法子并导入 ML.NET NuGet 包。

接下来,咱们将数据集加载到责任内存中。在咱们的示例中,咱们需要一个 TSV(制表符分隔文献)文献。这由适度台应用法子中的粗浅类示意:

此类代表 TSV 文献中的每一滑。

publicclassReciewData

{

}

当今,咱们为 TSV 数据的每一列添加属性:

publicclassReviewData

{

publicstring ReviewText { get; set; }

publicbool Label { get; set; }

}

倒霉的是,这还不及以加载此 TSV 文献并教 ML.Net 怎样援用此文献。

为此,咱们需要属性:LoadColumn 加上列的索引。

publicclassReviewData

{

[LoadColumn(0)]

publicstring ReviewText { get; set; }

[LoadColumn(1)]

publicbool Label { get; set; }

}

这是从 ReviewText 属性到 TSV 文献 ReviewText 列的粗浅映射。

当今,让咱们处理文献的存储旅途,并将它们保存在咱们的应用法子中:

起初,咱们创建西宾文献的旅途,即 TSV 文献 (Review.tsv)。

string baseDirectory = @"..\\..\\AI";

string subDirectory = "TrainingData";

string trainingDataFilePath = Path.Combine(baseDirectory, subDirectory, "Reviews.tsv");

咱们将使用此文献来西宾要用于分类的模子。

当今,咱们界说要西宾的模子的旅途。此模子保存为 ZIP 文献。

string modelPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "model.zip");

当今咱们需要一个 MLContext 变量。MLContext 可与 EF DbContext 相忘形。因此,每当要使用机器学习时,皆必须与 MLContext 进行交互,近似于 EF Core 中的 DBContext。

当今咱们已准备好加载数据。咱们不错证实需要操作它来证实咱们的条目西宾模子。

当今咱们构建模子:

为此,咱们需要 ML.NET 的特定类型。The IDataView:

var trainingDataView = mlContext.Data.LoadFromTextFile(trainingDataFilePath, separatorChar: '\t', hasHeader: true);

当今,我不错使用 MLContext 中名为 LoadFromTextFile 的函数。' 当今用于将数据投影到咱们率先创建的类中。当今必须将西宾文献的旅途传递给此函数。看成奖励,咱们不错在这里指定更多选项,举例 TSV 文献的分隔符以及咱们的西宾文献是否有标头(咱们有一个标头,是以我将此参数修复为 true)。

当今咱们也曾将数据加载到 DataView 中,咱们不错运行预处理了。预处理是创建所谓的管谈的一种方法。这以后可用于在咱们有传入数据(举例咱们的客户分数)时实施瞻望。为此,咱们需要从创建的数据视图 (IDataView) 中提取数据,然后对其进行挽回,以便将其用作机器学习过程的一部分。

当今,让咱们创建管谈。这具有特定的复返类型:IEstimator:

///

/// Creates the machine learning pipeline for review classification.

///

/// The ML context.

/// The machine learning pipeline.

publicstaticIEstimatorCreatePipeline(MLContext context)

{

return context.Transforms.Text.FeaturizeText("Features", "ReviewText")

.Append(context.BinaryClassification.Trainers.SdcaLogisticRegression(labelColumnName: "Label"))

.AppendCacheCheckpoint(context);

}

**Context.Transforms.Text。**FeaturizeText 是 ML.NET 中的文本挽回组件,用于将文本数据挽回为数值身分。

“特征”是包含生成的数值特征的新列称呼。

**“ReviewText”**是 TSV 文献中包含要挽回为数字特征的文本的列的称呼。

当今运行西宾模子:

**'。Append“将下一步添加到管谈中。使用“Context.BinaryClassification.Trainers.SdcaLogisticRegression”**西宾模子,该算法界说了要西宾模子的算法,在本例中为 SdcaLogisticRegression 算法。“标签”是示意要瞻望的方针变量的列或列的称呼。在咱们的示例中,它是对这种评估是积极的照旧颓靡的分类。

让咱们再次回顾一下:

此高歌生成实施以下法子的管谈:

文本特征化:“ReviewText”列中的文本将挽回为数字身分,并存储在新的“身分”列中。

模子西宾:“特征”列中的数值特征用于西宾具有“标签”列中方针变量的二元分类模子。

当今,咱们也曾创建了管谈,不错运行西宾模子了。

var pipeline = CreatePipeline(mlContext);

var model = pipeline.Fit(trainingDataView);

咱们使用“管谈。适当(...)' 高歌证实 TSV 文献中的数据西宾模子。然后将模子存储在内存中。

关联词,为了保存模子而无谓每次皆创建和重新西宾它,咱们不错使用“Save”方法。这使咱们八成将西宾好的模子保存在特定的文献旅途中。通过这种神色,咱们不错在需要时粗浅地加载和使用模子,而无谓每次皆重新西宾它。

MlContext 中有一个选项,咱们不错在其中找到 Save 函数:

context.Model.Save(model, schema, modelPath);

起初,咱们从 TSV 文献的 IDataView 传输经过西宾的模子和架构,然后传输要保存模子的旅途。

咱们当今也曾西宾了咱们的模子并将其保存到硬盘中。

当今咱们需要另一个示意西宾的 DataSet 的类,即模子的成果(瞻望类)。为此,咱们从 TSV 文献 (ReviewData) 创建另一个与 DataSet 类具有近似结构的类。

publicclassReviewPrediction

{

[ColumnName("PredictedLabel")]

publicbool PredictedLabel { get; set; }

}

该属性界说在 MLContext 中使用“PredictedLabel”列的称呼来读取其中的瞻望值。

为了将模子磋磨到瞻望类,咱们当今需要一个 PipelineEngine。咱们从 MLContext 再次创建此引擎。

var predictionEngine = mlContext.Model.CreatePredictionEngine(model);

咱们将泛型类型 TSrc(源)和 TDst(方针)用于输入和输出类,“ReviewData”和“ReviewPrediction”(“Good rating”、“Positiv”)。

各个组件偏握交互当今应该是不错延续的:为什么咱们需要将文本挽回为数字特征,为什么咱们需要准备数据以便测度机八成延续它,以及咱们的“ReviewData”类是咱们的源类,“ReviewDataPrediction”是咱们的方针类。

当今咱们也曾完成了准备法子,咱们不错参预瞻望阶段。

当今,让咱们来处理实施瞻望并复返预期方针变量的代码。

在咱们的示例中,瞻望成果是一个布尔值。

第一步是输入一个分数,然后咱们将其写入“ReviewData”输入类。

var input = newReviewData { ReviewText = inputReviewText };

变量“ReviewText”是一个字符串变量,包含咱们的审阅。

当今,咱们将“ReviewData”类型的输入变量传递到咱们刚刚创建的管谈。

因此,咱们收到“ReviewPrediction”输出类,当今不错通过该变量从模子看望方针变量。

// Classify the new rating and display the result

var prediction = predictionEngine.Predict(input);

Console.WriteLine($"The classification for the rating ‘{ input.ReviewText}’ is: { (prediction.PredictedLabel ? "Positiv" : "Negativ")}");

若是模子具有考究的西宾数据,咱们当今应该取得正确的瞻望成果。

它似乎有用。

固然,这仅仅一个小例子,模子并不完竣,但若是你西宾得好,遐想情况下它应该老是复返正确的成果。

以下扩张已添加到示例中,用于在输入不正确或未知时重新西宾模子。

启动应用法子时,您不错遴荐向模子添加新数据和径直西宾,也不错创建新防护。

鄙人面的著作中,我将仔细征询图像识别和瞻望。

回顾:

尽管本文仅限于文天职类,但仔细不雅察并带有少量创造力,所描述的方法开辟了很多可能性。举例,对某个分类的识别可用于自动触发进一步的过程。

总的来说,不错说东谈主工智能具有弘大的后劲,不错在泛泛生计的很多规模为咱们提供复旧并优化经由。文天职类仅仅广漠可能应用中的一个例子。不错假定,翌日越来越多的规模将受益于东谈主工智能的可能性,这将为公司和个东谈主开辟新的契机。

若是你心爱我的著作,请给我一个赞!谢谢