esemény
Intelligens alkalmazások létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációEzt a böngészőt már nem támogatjuk.
Frissítsen a Microsoft Edge-re, hogy kihasználhassa a legújabb funkciókat, a biztonsági frissítéseket és a technikai támogatást.
Ez az útmutató bemutatja a valószínűségi programozást Infer.NET használatával. A valószínűségi programozás olyan gépi tanulási megközelítés, amelyben az egyéni modellek számítógépes programokként vannak kifejezve. Lehetővé teszi a tartományi ismeretek beépítését a modellekbe, és érthetőbbé teszi a gépi tanulási rendszert. Emellett támogatja az online következtetést – az új adatok érkezésekor történő tanulás folyamatát. Infer.NET a Microsoft különböző termékeiben használják az Azure-ban, az Xboxban és a Bingben.
A valószínűségi programozás lehetővé teszi a valós folyamatok statisztikai modelljeinek létrehozását.
Helyi fejlesztési környezet.
Ez az útmutató arra számít, hogy rendelkezik egy fejlesztéshez használható géppel. A .NET-oktatóanyag 10 perc alatt "Helló világ!" alkalmazás útmutatást tartalmaz a helyi fejlesztési környezet beállításához macOS, Windows vagy Linux rendszeren.
Nyisson meg egy új parancssort, és futtassa a következő parancsokat:
dotnet new console -o myApp
cd myApp
A dotnet
parancs létrehoz egy new
típusú console
alkalmazást. A -o
paraméter létrehoz egy könyvtárat, amely az myApp
alkalmazás tárolási helyét tartalmazza, és feltölti a szükséges fájlokkal. A cd myApp
parancs az újonnan létrehozott alkalmazáskönyvtárba helyezi.
A Infer.NET használatához telepítenie kell a Microsoft.ML.Probabilistic.Compiler
csomagot. Futtassa a következő parancsot a parancssorban:
dotnet add package Microsoft.ML.Probabilistic.Compiler
A példa az irodában lejátszott asztalitenisz- vagy csocsómérkőzéseket használja. Az egyes mérkőzések résztvevői és eredményei vannak. Ebből az adatból ki szeretné következtetni a játékos képességeit. Tegyük fel, hogy minden játékos rendelkezik egy normálisan elosztott látens képességgel, és az adott meccs teljesítménye ennek a képességnek a zajos verziója. Az adatok arra kényszerítik a nyertes teljesítményét, hogy nagyobb legyen, mint a vesztes teljesítménye. Ez a népszerű TrueSkill-modell egyszerűsített verziója, amely támogatja a csapatokat, a rajzokat és más bővítményeket is. Ennek a modellnek a fejlett verzióját használják a halo és a Gears of War legkelendőbb játékcímek párosításához.
Meg kell listázni a kikövetkeztetett játékos készségek mellett azok varianciája - a mértéke bizonytalanság körül a készségek.
Játékeredmények mintaadatai
Játék | A nyertes | Vesztes |
---|---|---|
0 | Player 0 | 1. játékos |
2 | Player 0 | 3. játékos |
3 | Player 0 | 4. játékos |
4 | 1. játékos | 2. játékos |
5 | 3. játékos | 1. játékos |
6 | 4. játékos | 2. játékos |
A mintaadatok közelebbről megvizsgálva láthatja, hogy a 3. és a 4. játékos egyaránt egy győzelemmel és egy vereséggel rendelkezik. Nézzük meg, hogy néznek ki a rangsorok a valószínűségi programozás használatával. Figyelje meg azt is, hogy van egy nulla játékos, mert még az Office-beli egyező listák is nulla alapján nekünk fejlesztők.
Miután megtervezte a modellt, itt az ideje, hogy valószínűségi programként fejezze ki a Infer.NET modellezési API használatával. Nyissa meg Program.cs
a kedvenc szövegszerkesztőjében, és cserélje le az összes tartalmát a következő kódra:
namespace myApp
{
using System;
using System.Linq;
using Microsoft.ML.Probabilistic;
using Microsoft.ML.Probabilistic.Distributions;
using Microsoft.ML.Probabilistic.Models;
class Program
{
static void Main(string[] args)
{
// The winner and loser in each of 6 samples games
var winnerData = new[] { 0, 0, 0, 1, 3, 4 };
var loserData = new[] { 1, 3, 4, 2, 1, 2 };
// Define the statistical model as a probabilistic program
var game = new Range(winnerData.Length);
var player = new Range(winnerData.Concat(loserData).Max() + 1);
var playerSkills = Variable.Array<double>(player);
playerSkills[player] = Variable.GaussianFromMeanAndVariance(6, 9).ForEach(player);
var winners = Variable.Array<int>(game);
var losers = Variable.Array<int>(game);
using (Variable.ForEach(game))
{
// The player performance is a noisy version of their skill
var winnerPerformance = Variable.GaussianFromMeanAndVariance(playerSkills[winners[game]], 1.0);
var loserPerformance = Variable.GaussianFromMeanAndVariance(playerSkills[losers[game]], 1.0);
// The winner performed better in this game
Variable.ConstrainTrue(winnerPerformance > loserPerformance);
}
// Attach the data to the model
winners.ObservedValue = winnerData;
losers.ObservedValue = loserData;
// Run inference
var inferenceEngine = new InferenceEngine();
var inferredSkills = inferenceEngine.Infer<Gaussian[]>(playerSkills);
// The inferred skills are uncertain, which is captured in their variance
var orderedPlayerSkills = inferredSkills
.Select((s, i) => new { Player = i, Skill = s })
.OrderByDescending(ps => ps.Skill.GetMean());
foreach (var playerSkill in orderedPlayerSkills)
{
Console.WriteLine($"Player {playerSkill.Player} skill: {playerSkill.Skill}");
}
}
}
}
Futtassa a következő parancsot a parancssorban:
dotnet run
Az eredményeknek a következőhöz hasonlónak kell lenniük:
Compiling model...done.
Iterating:
.........|.........|.........|.........|.........| 50
Player 0 skill: Gaussian(9.517, 3.926)
Player 3 skill: Gaussian(6.834, 3.892)
Player 4 skill: Gaussian(6.054, 4.731)
Player 1 skill: Gaussian(4.955, 3.503)
Player 2 skill: Gaussian(2.639, 4.288)
Az eredményekben figyelje meg, hogy a 3. játékos valamivel magasabb, mint a 4. játékos a modellünk szerint. Ennek az az oka, hogy a 3. játékos győzelme az 1. játékos felett fontosabb, mint a 4. játékos győzelme a 2. játékos felett – vegye figyelembe, hogy az 1. játékos legyőzi a 2. játékost. Player 0 a teljes bajnok!
A statisztikai modellek tervezése önmagában is készség. A Microsoft Research Cambridge csapata egy ingyenes online könyvet írt, amely gyengéd bevezetést nyújt a cikkbe. A könyv 3. fejezete részletesebben ismerteti a TrueSkill-modellt. Ha figyelembe vett egy modellt, a Infer.NET webhelyén található részletes dokumentáció segítségével kódmá alakíthatja azt.
A tanulás folytatásához és további minták kereséséhez tekintse meg a Infer.NET GitHub-adattárat.
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást:
esemény
Intelligens alkalmazások létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációOktatás
Modul
Kihívás projekt – Minijáték létrehozása a GitHub Copilot és a .NET használatával - Training
Bemutatjuk, hogy képes-e különböző módszereket elemezni, létrehozni és használni egy konzol minijáték fejlesztéséhez a .NET-ben a GitHub Codespaces és a GitHub Copilot használatával.
Tanúsítvány
Microsoft Tanúsított: Azure Adattudós Szaktárs - Certifications
Kezelheti az adatok betöltését és előkészítését, a modellek betanítását és üzembe helyezését, valamint a gépi tanulási megoldások monitorozását a Python, az Azure Machine Learning és az MLflow használatával.
Dokumentáció
Oktatóanyag: Árak előrejelzése regresszióval a Model Builderrel - ML.NET
Ez az oktatóanyag bemutatja, hogyan hozhat létre regressziós modellt ML.NET Model Builder használatával az árak előrejelzéséhez, különösen a New York-i taxidíjakhoz.
Oktatóanyag: Véleményezés elemzése TensorFlow-modellel - ML.NET
Ez az oktatóanyag bemutatja, hogyan használható egy előre betanított TensorFlow-modell a hangulat besorolására a webhely megjegyzéseiben. A bináris hangulatosztályozó egy C#-konzolalkalmazás, amelyet a Visual Studio használatával fejlesztettek ki.
Oktatóanyag: Filmjavaslat-modell betanítása a Model Builder használatával - ML.NET
Megtudhatja, hogyan taníthat be egy javaslatmodellt filmek ajánlásához a Model Builder használatával