Anbefalingssystemer er en af de mest udbredte teknologier til maskinlæring (ML) i applikationer fra den virkelige verden, lige fra sociale netværk til e-handelsplatforme. Brugere af mange onlinesystemer er afhængige af anbefalingssystemer til at skabe nye venskaber, opdage ny musik i henhold til foreslåede musiklister eller endda træffe e-handelsbeslutninger baseret på de anbefalede produkter. I sociale netværk er en almindelig use case at anbefale nye venner til en bruger baseret på brugernes andre forbindelser. Brugere med fælles venner kender sandsynligvis hinanden. Derfor bør de have en højere score for et anbefalingssystem at foreslå, hvis de ikke er blevet tilsluttet endnu.
Sociale netværk kan naturligt udtrykkes i en graf, hvor noderne repræsenterer mennesker, og forbindelserne mellem mennesker, såsom venskab eller kollegaer, er repræsenteret ved kanter. Det følgende illustrerer et sådant socialt netværk. Lad os forestille os, at vi har et socialt netværk med medlemmerne (noderne) Bill, Terry, Henry, Gary og Alistair. Deres forhold er repræsenteret af et link (kant), og hver persons interesser, såsom sport, kunst, spil og tegneserier, er repræsenteret af nodeegenskaber.
Formålet her er at forudsige, om der er et potentielt manglende led mellem medlemmer. Skal vi for eksempel anbefale en forbindelse mellem Henry og Terry? Ser vi på grafen, kan vi se, at de har to fælles venner, Gary og Alistair. Derfor er der en god chance for, at Henry og Terry enten allerede kendte hinanden eller snart kan lære hinanden at kende. Hvad med Henry og Bill? De har ingen fælles venner, men de har en svag forbindelse gennem deres venners forbindelser. Derudover har de begge lignende interesser i kunst, tegneserier og spil. Skal vi fremme denne forbindelse? Alle disse spørgsmål og intuitioner er kernelogikken i anbefalingssystemer for sociale netværk.
En mulig måde at gøre dette på er at anbefale relationer baseret på grafudforskning. I grafforespørgselssprog, som f.eks Apache TinkerPop Gremlin, implementeringen af regelsæt såsom at tælle fælles venner, er relativt let, og den kan bruges til at bestemme forbindelsen mellem Henry og Terry. Disse regelsæt vil dog være meget komplicerede, når vi ønsker at tage højde for andre attributter såsom nodeegenskaber, forbindelsesstyrke osv. Lad os forestille os et regelsæt til at bestemme forbindelsen mellem Henry og Bill. Dette regelsæt skal tage højde for deres fælles interesser og deres svage forbindelser gennem bestemte stier i grafen. For at øge robustheden skal vi muligvis også tilføje en afstandsfaktor for at favorisere stærke forbindelser og straffe de svage. På samme måde vil vi gerne have en faktor til at fremme fælles interesser. Snart bliver de regelsæt, der kan afsløre komplekse skjulte mønstre, umulige at opregne.
ML-teknologi lader os opdage skjulte mønstre ved at lære algoritmer. Et eksempel er XGBoost, som er meget brugt til klassifikations- eller regressionsopgaver. Algoritmer som XGBoost bruger dog en konventionel ML-tilgang baseret på et tabeldataformat. Disse tilgange er ikke optimeret til grafiske datastrukturer, og de kræver kompleks funktionsteknik for at klare disse datamønstre.
I det foregående eksempel på sociale netværk er grafinteraktionsoplysningerne afgørende for at forbedre anbefalingsnøjagtigheden. Graph Neural Network (GNN) er en deep learning (DL)-ramme, der kan anvendes til grafdata for at udføre forudsigelsesopgaver på kantniveau, nodeniveau eller grafniveau. GNN'er kan udnytte individuelle nodekarakteristika såvel som grafstrukturoplysninger, når de lærer grafrepræsentationen og underliggende mønstre. Derfor har GNN-baserede metoder i de senere år sat nye standarder for mange anbefalingssystemers benchmarks. Se mere detaljeret information i nyere forskningsartikler: En omfattende undersøgelse af grafiske neurale netværk , Graph Learning-baserede anbefalingssystemer: En gennemgang.
Det følgende er et berømt eksempel på en sådan brugssag. Forskere og ingeniører på Pinterest har uddannet sig Graph Convolutional Neurale Networks for Web-Scale Recommender Systems, kaldet PinSage, med tre milliarder noder, der repræsenterer stifter og brædder, og 18 milliarder kanter. PinSage genererer indlejringer af høj kvalitet, der repræsenterer stifter (visuelle bogmærker til onlineindhold). Disse kan bruges til en lang række downstream-anbefalingsopgaver, såsom nærmeste naboopslag i det indlærte indlejringsrum til indholdssøgning og anbefalinger.
I dette indlæg vil vi lede dig gennem, hvordan du bruger GNN'er til anbefalingstilfælde ved at caste dette som et linkforudsigelsesproblem. Vi vil også illustrere, hvordan Neptune ML kan lette implementeringen. Vi sørger også for eksempelkode på GitHub at træne din første GNN med Neptune ML, og drage anbefalingsslutninger på demografen gennem linkforudsigelsesopgaver.
Link forudsigelse med Graph Neural Networks
I betragtning af det tidligere eksempel på sociale netværk, vil vi gerne anbefale nye venner til Henry. Både Terry og Bill ville være gode kandidater. Terry har flere fælles venner (Gary, Alistair) med Henry, men ingen fælles interesser. Mens Bill deler fælles interesser (kunst, tegneserier, spil) med Henry, men ingen fælles venner. Hvilken ville være en bedre anbefaling? Når det er indrammet som et linkforudsigelsesproblem, er opgaven at tildele en score til enhver mulig forbindelse mellem de to noder. Jo højere linkscore, desto mere sandsynligt vil denne anbefaling konvergere. Ved at lære linkstrukturer, der allerede er til stede i grafen, kan en linkforudsigelsesmodel generalisere nye linkforudsigelser, der 'fuldfører' grafen.
Funktionens parametre f
der forudsiger, at linkscoren læres under træningsfasen. Siden funktionen f
foretager en forudsigelse for hvilke som helst to knudepunkter i grafen, er de funktionsvektorer, der er knyttet til knudepunkterne, afgørende for indlæringsprocessen. For at forudsige linkresultatet mellem Henry og Bill har vi et sæt rådatafunktioner (kunst, tegneserier, spil), der kan repræsentere Henry og Bill. Vi transformerer dette sammen med forbindelserne i grafen ved hjælp af et GNN-netværk til at danne nye repræsentationer kendt som node-indlejringer. Vi kan også supplere eller erstatte de oprindelige råfunktioner med vektorer fra en indlejringsopslagstabel, som kan læres under træningsprocessen. Ideelt set bør de indlejrede funktioner for Henry og Bill repræsentere deres interesser såvel som deres topologiske information fra grafen.
Sådan fungerer GNN'er
En GNN transformerer de indledende nodefunktioner til nodeindlejringer ved at bruge en teknik kaldet besked passerer. Beskedoverførselsprocessen er illustreret i den følgende figur. I begyndelsen konverteres nodeattributterne eller funktionerne til numeriske attributter. I vores tilfælde laver vi en varm kodning af de kategoriske træk (Henrys interesser: kunst, tegneserier, spil). Derefter samler det første lag af GNN alle naboernes (Gary og Alistair) rå træk (i sort) for at danne et nyt sæt træk (i gult). En almindelig tilgang er den lineære transformation af alle de tilstødende funktioner, derefter aggregere dem gennem en normaliseret sum, og overføre resultaterne til en ikke-lineær aktiveringsfunktion, såsom ReLU, for at generere et nyt vektorsæt. Følgende figur illustrerer, hvordan meddelelsesoverførsel fungerer for node Henry. H, GNN-meddelelsesoverførselsalgoritmen, vil beregne repræsentationer for alle grafknuderne. Disse bruges senere som inputfunktioner til det andet lag.
Det andet lag af en GNN gentager den samme proces. Den tager den tidligere beregnede funktion (i gult) fra det første lag som input, samler alle Gary og Alistairs naboers nye indlejrede funktioner og genererer funktionsvektorer i andet lag til Henry (i orange). Som du kan se, udvidede vi funktionssammenlægningen til 2-hop-naboer ved at gentage meddelelsesoverførselsmekanismen. I vores illustration begrænser vi os til 2-hop-naboer, men at udvide til 3-hop-naboer kan gøres på samme måde ved at tilføje endnu et GNN-lag.
De endelige indlejringer fra Henry og Bill (i orange) bruges til at beregne scoren. Under træningsprocessen er linkscoren defineret som 1, når kanten eksisterer mellem de to noder (positiv stikprøve), og som 0, når kanterne mellem de to noder ikke eksisterer (negativ prøve). Derefter fejlen eller tabet mellem den faktiske score og forudsigelsen f(e1,e2)
er tilbage-propageret i tidligere lag for at justere vægtene. Når træningen er færdig, kan vi stole på de indlejrede funktionsvektorer for hver node til at beregne deres linkscore med vores funktion f
.
I dette eksempel har vi forenklet læringsopgaven på en homogen graf, hvor alle knudepunkter og kanter er af samme type. For eksempel er alle knudepunkterne i grafen typen "People", og alle kanterne er typen "venner med". Indlæringsalgoritmen understøtter dog også heterogene grafer med forskellige node- og kanttyper. Vi kan udvide den tidligere use case til at anbefale produkter til forskellige brugere, der deler lignende interaktioner og interesser. Se flere detaljer i denne forskningsartikel: Modellering af relationelle data med Graph Convolutional Networks.
På AWS re:Invent 2020 introducerede vi Amazon Neptune ML, som lader vores kunder træne ML-modeller på grafdata, uden nødvendigvis at have dyb ML-ekspertise. I dette eksempel vil vi ved hjælp af Neptune ML vise dig, hvordan du bygger dit eget anbefalingssystem på grafdata.
Træn dit Graph Convolution Network med Amazon Neptune ML
Neptune ML bruger grafisk neural netværksteknologi til automatisk at oprette, træne og implementere ML-modeller på dine grafdata. Neptune ML understøtter almindelige grafforudsigelsesopgaver, såsom nodeklassificering og regression, kantklassificering og regression og linkforudsigelse.
Den er drevet af:
- Amazon Neptun: en hurtig, pålidelig og fuldt administreret grafdatabase, som er optimeret til lagring af milliarder af relationer og forespørgsler på grafen med millisekunders latency. Amazon Neptune understøtter tre åbne standarder til at bygge grafapplikationer: Apache TinkerPop Gremlin, RDF SPARQL og openCypher. Lær mere på Oversigt over Amazon Neptune-funktioner.
- Amazon SageMaker: en fuldt administreret tjeneste, der giver enhver udvikler og dataforsker muligheden for hurtigt at forberede bygge, træne og implementere ML-modeller.
- Deep Graph Library (DGL): an open source, højtydende og skalerbar Python-pakke til DL på grafer. Det giver hurtige og hukommelseseffektive beskeder, der overfører primitiver til træning af Graph Neurale Networks. Neptune ML bruger DGL til automatisk at vælge og træne den bedste ML-model til din arbejdsbyrde. Dette giver dig mulighed for at lave ML-baserede forudsigelser på grafdata i timer i stedet for uger.
Den nemmeste måde at komme i gang med Neptune ML er at bruge AWS CloudFormation hurtigstartskabelon. Skabelonen installerer alle de nødvendige komponenter, inklusive en Neptune DB-klynge, og opsætter netværkskonfigurationerne, IAM-rollerne og den tilknyttede SageMaker notebook-instans med præ-udfyldte notebook-eksempler til Neptune ML.
Følgende figur illustrerer forskellige trin for Neptune ML til at træne et GNN-baseret anbefalingssystem. Lad os zoome ind på hvert trin og udforske, hvad det indebærer:
-
Dataeksportkonfiguration
Det første trin i vores Neptune ML-proces er at eksportere grafdataene fra Neptune-klyngen. Vi skal specificere parametrene og modelkonfigurationen for dataeksportopgaven. Vi bruger Neptune-arbejdsbænken til alle konfigurationer og roser. Arbejdsbænken lader os arbejde med Neptune DB-klyngen ved hjælp af Jupyter-notebooks, der hostes af Amazon SageMaker. Derudover giver den en række magiske kommandoer i notesbøgerne, der sparer en masse tid og kræfter. Her er vores eksempel på eksportparametre:
In export_params
, skal vi konfigurere den grundlæggende opsætning, såsom Neptun-klyngen og output Amazon Simple Storage Service (S3) sti til eksporteret datalagring. Konfigurationen angivet i additionalParams
er den type ML-opgave, der skal udføres. I dette eksempel bruges linkforudsigelse valgfrit til at forudsige en bestemt kanttype (Bruger—FRIEND—Bruger). Hvis der ikke er angivet nogen måltype, vil Neptune ML antage, at opgaven er Link Prediction. Parametrene specificerer også detaljer om de data, der er gemt i vores graf, og hvordan ML-modellen vil fortolke disse data (vi har "Bruger" som node og "interesser" som nodeegenskab).
For at køre hvert trin i ML byggeprocessen skal du blot bruge Neptune workbench-kommandoer. Det Neptun arbejdsbord indeholder en linjemagi og en cellemagi, der kan spare dig for en masse tid på at administrere disse trin. For at køre dataeksporten skal du bruge kommandoen Neptune workbench: %neptune_ml export start
Når eksportjobbet er fuldført, vil vi få Neptun-grafen eksporteret til CSV-format og gemt i en S3-bøtte. Der vil være to typer filer: nodes.csv
, edges.csv
. En fil med navnet training-data-configuration.json
vil også blive genereret, som har den nødvendige konfiguration for at Neptune ML kan udføre modeltræning.
Se Eksporter data fra Neptune til Neptune ML for mere information.
-
Dataforarbejdning
Neptune ML udfører funktionsekstraktion og -kodning som en del af databehandlingstrinnene. Almindelige typer egenskabsforbehandling omfatter: kodning af kategoriske funktioner gennem one-hot-kodning, bucketing af numeriske funktioner eller brug af word2vec til at kode en strengegenskab eller andre fri-formede tekstegenskabsværdier.
I vores eksempel vil vi blot bruge ejendommen "interesser". Neptune ML koder værdierne som multikategoriske. Men hvis en kategorisk værdi er kompleks (mere end tre ord pr. node), så udleder Neptune ML, at egenskabstypen er tekst og bruger text_word2vec-kodningen.
For at køre dataforbehandling skal du bruge følgende Neptune notebook magiske kommando: %neptune_ml dataprocessing start
I slutningen af dette trin genereres en DGL-graf fra det eksporterede datasæt til brug for modeltræningstrinnet. Neptune ML tuner automatisk modellen med Hyperparameter Optimization Tuning-job defineret i training-data-configuration.json
. Vi kan downloade og ændre denne fil for at justere modellens hyperparametre, såsom batch-størrelse, num-hidden, num-epoker, dropout osv. Her er en eksempel fil konfiguration.json.
Se Behandling af grafdata eksporteret fra Neptun til træning for mere information.
-
Model træning
Næste trin er den automatiserede træning af GNN-modellen. Modeltræningen foregår i to trin. Den første fase bruger et SageMaker Processing-job til at generere en modeltræningsstrategi. Dette er et konfigurationssæt, der specificerer, hvilken type model og model hyperparameterområder, der vil blive brugt til modeltræningen.
Derefter vil et SageMaker-hyperparameterindstillingsjob blive lanceret. Det SageMaker Hyperparameter Tuning Optimization job kører et forudbestemt antal modeltræningsjobforsøg på de behandlede data, prøver forskellige hyperparameterkombinationer i henhold til model-hpo-configuration.json
fil, og gemmer modelartefakter genereret af træningen i output Amazon S3-lokationen.
For at starte træningstrinnet kan du bruge %neptune_ml training start
kommando.
Når alle træningsjob er fuldført, vil Hyperparameter tuning-jobbet gemme artefakterne fra den bedst ydende model, som vil blive brugt til slutninger.
Ved afslutningen af træningen vil Neptune ML instruere SageMaker om at gemme den trænede model, de rå indlejringer beregnet for noderne og kanterne og kortlægningsinformationen mellem indlejringerne og nodeindeksene.
Se Træning af en model ved hjælp af Neptune ML for mere information.
-
Opret et slutningsendepunkt i Amazon SageMaker
Nu hvor grafrepræsentationen er lært, kan vi implementere den indlærte model bag et slutpunkt for at udføre inferensanmodninger. Modelinputtet vil være den bruger, som vi skal generere venners anbefalinger til, sammen med kanttypen, og outputtet vil være listen over de sandsynligt anbefalede venner for den bruger.
For at implementere modellen til SageMaker-slutpunktsinstansen skal du bruge %neptune_ml endpoint create
kommando.
-
Spørg ML-modellen ved hjælp af Gremlin
Når endepunktet er klar, kan vi bruge det til grafinferensforespørgsler. Neptune ML understøtter grafinferensforespørgsler i Gremlin eller SPARQL. I vores eksempel kan vi nu tjekke vennernes anbefaling med Neptune ML på brugeren "Henry". Det kræver næsten den samme syntaks at krydse kanten, og det viser de andre brugere, der er forbundet til Henry gennem FRIEND-forbindelsen.
Neptune#ml.prediction
returnerer forbindelsen bestemt af Neptune ML-forudsigelser ved at bruge den model, som vi lige har trænet på den sociale graf. Bill er returneret ligesom vores forventning.
Her er et andet eksempel på forudsigelsesforespørgsel, der bruges til at forudsige de otte bedste brugere, der med størst sandsynlighed vil forbinde med Henry:
Resultaterne er rangeret fra stærkere tilknytning til svagere, hvor link Henry — FRIEND — Colin and Henry — FRIEND — Terry
foreslås også. Dette forslag er gennem grafbaseret ML, hvor komplekse interaktionsmønstre på grafen kan udforskes.
Se Gremlin-inferensforespørgsler i Neptune ML for mere information.
Modeltransformation eller genoptræning, når grafdata ændres
Et andet spørgsmål, du kan stille, er: hvad hvis mit sociale netværk ændres, eller hvis jeg vil komme med anbefalinger til nyligt tilføjede brugere? I disse scenarier, hvor du løbende har skiftende grafer, skal du muligvis opdatere ML-forudsigelser med de nyeste grafdata. De genererede modelartefakter efter træning er direkte knyttet til træningsgrafen. Dette betyder, at inferensendepunktet skal opdateres, når entiteterne i den oprindelige træningsgraf ændres.
Du behøver dog ikke omskole hele modellen for at lave forudsigelser på den opdaterede graf. Med en trinvis modelslutningsworkflow behøver du kun at eksportere Neptune DB-dataene, udføre en trinvis dataforbehandling, køre et modelbatchtransformationsjob og derefter opdatere slutningsendepunktet. Modeltransformeringstrinnet tager den trænede model fra hovedarbejdsgangen og resultaterne af det inkrementelle dataforbehandlingstrin som input. Derefter udsender den en ny modelartefakt, der skal bruges til slutning. Denne nye modelartefakt er skabt ud fra de opdaterede grafdata.
Et særligt fokus her er på model-transform step-kommandoen. Den kan beregne modelartefakter på grafdata, der ikke blev brugt til modeltræning. Nodeindlejringerne genberegnes, og alle eksisterende nodeindlejringer tilsidesættes. Neptune ML anvender den indlærte GNN-koder fra den tidligere trænede model til de nye grafdataknuder med deres nye funktioner. Derfor skal de nye grafdata behandles med de samme funktionskodninger, og de skal overholde det samme grafskema som de originale grafdata. Se flere detaljer om implementering af Neptune ML på Generering af nye modelartefakter.
Desuden kan du genoptræne hele modellen, hvis grafen ændrer sig dramatisk, eller hvis den tidligere trænede model ikke længere nøjagtigt kunne repræsentere de underliggende interaktioner. I dette tilfælde kan genbrug af de indlærte modelparametre på en ny graf ikke garantere en lignende modelydelse. Du skal genoptræne din model på den nye graf. For at accelerere hyperparametresøgningen kan Neptune ML udnytte informationen fra den tidligere modeltræningsopgave med varm start: Resultaterne af tidligere træningsjob bruges til at vælge gode kombinationer af hyperparametre til at søge over det nye tuningjob.
Se arbejdsgange til håndtering af grafdata i udvikling for flere detaljer.
Konklusion
I dette indlæg har du set, hvordan Neptune ML og GNN'er kan hjælpe dig med at komme med anbefalinger om grafdata ved hjælp af en linkforudsigelsesopgave ved at kombinere information fra de komplekse interaktionsmønstre i grafen.
Linkforudsigelse er en måde at implementere et anbefalingssystem på grafen. Du kan konstruere din anbefaling på mange andre måder. Du kan bruge de indlejringer, du har lært under linkforudsigelsestræning, til at gruppere noderne i forskellige segmenter på en uovervåget måde og anbefale elementer til den, der tilhører det samme segment. Ydermere kan du hente indlejringerne og føre dem ind i et downstream lighedsbaseret anbefalingssystem som inputfunktion. Nu koder denne ekstra inputfunktion også den semantiske information afledt af grafen og kan give betydelige forbedringer til systemets overordnede præcision. Lær mere om Amazon Neptune ML ved at besøge hjemmeside eller stil gerne spørgsmål i kommentarerne!
Om forfatterne
Yanwei Cui, PhD, er Machine Learning Specialist Solutions Architect hos AWS. Han startede maskinlæringsforskning ved IRISA (Research Institute of Computer Science and Random Systems) og har flere års erfaring med at bygge kunstig intelligens-drevne industrielle applikationer inden for computersyn, naturlig sprogbehandling og online brugeradfærdsforudsigelse. Hos AWS deler han domæneekspertisen og hjælper kunderne med at frigøre forretningspotentialer og skabe handlingsrettede resultater med maskinlæring i stor skala. Uden for arbejdet holder han af at læse og rejse.
Will Badr er en Principal AI/ML Specialist SA, der arbejder som en del af det globale Amazon Machine Learning-team. Will brænder for at bruge teknologi på innovative måder for at påvirke samfundet positivt. I sin fritid kan han godt lide at dykke, spille fodbold og udforske Stillehavsøerne.
- '
- "
- 100
- 2020
- 7
- Om
- Ifølge
- Konto
- Desuden
- Yderligere
- algoritme
- algoritmer
- Alle
- allerede
- Amazon
- Amazon maskinindlæring
- Amazon SageMaker
- Apache
- applikationer
- kunstig
- kunstig intelligens
- Arts
- Automatiseret
- AWS
- AWS re: Invent
- Begyndelse
- BEDSTE
- Bill
- Billion
- Sort
- bygge
- Bygning
- virksomhed
- tilfælde
- udfordringer
- klassificering
- kode
- Fælles
- samfund
- komplekse
- Compute
- Datalogi
- Computer Vision
- computing
- Konfiguration
- tilslutning
- Tilslutninger
- Konsol
- indhold
- Converge
- kunne
- Kunder
- data
- dataforsker
- data opbevaring
- Database
- deal
- dyb læring
- Udvikler
- forskellige
- opdagelse
- afstand
- ecommerce
- Edge
- Endpoint
- Engineering
- Ingeniører
- etc.
- eksempel
- erfaring
- udforskning
- eksport
- udvinding
- FAST
- Feature
- Funktionalitet
- Figur
- Fornavn
- Fokus
- formular
- format
- Framework
- Gratis
- Venskab
- funktion
- Spil
- generere
- Global
- godt
- grafiske neurale netværk
- stor
- Håndtering
- hjælpe
- hjælper
- link.
- Hvordan
- How To
- HTTPS
- IAM
- KIMOs Succeshistorier
- gennemføre
- forbedring
- Herunder
- Forøg
- individuel
- industrielle
- oplysninger
- innovativ
- Intelligens
- interaktion
- interesser
- IT
- Job
- Karriere
- Sprog
- Sprog
- LÆR
- lærte
- læring
- Leverage
- Bibliotek
- Line (linje)
- LINK
- Liste
- Lister
- placering
- leder
- kig op
- machine learning
- Medlemmer
- millisekund
- ML
- model
- Musik
- Naturligt sprog
- Natural Language Processing
- behov
- naboer
- netværk
- net
- Neural
- neurale netværk
- neurale netværk
- Nye funktioner
- noder
- notesbøger
- online
- åbent
- Andet
- Pacific
- Papir
- Mennesker
- ydeevne
- fase
- Platforme
- Leg
- Precision
- forudsigelse
- Forudsigelser
- præsentere
- Main
- Problem
- behandle
- Produkter
- Profil
- fremme
- ejendom
- foreslå
- give
- giver
- køb
- Python
- spørgsmål
- rækkevidde
- Raw
- rådata
- RE
- Læsning
- regression
- Relationer
- erstatte
- forskning
- Resultater
- omskoling
- afkast
- Kør
- sagemaker
- Scale
- Videnskab
- Søg
- sæt
- Del
- Aktier
- lignende
- Simpelt
- lille
- Fodbold
- Social
- social graf
- sociale netværk
- sociale netværk
- Løsninger
- Space
- Sport
- Stage
- standarder
- starte
- påbegyndt
- opbevaring
- forhandler
- Strategi
- supplere
- Understøtter
- Kortlægge
- systemet
- Systemer
- mål
- Teknologier
- Teknologier
- Grafen
- Gennem
- tid
- top
- Kurser
- Transform
- Transformation
- Opdatering
- us
- brugere
- værdi
- vision
- Hvad
- WHO
- bredt
- Wikipedia
- uden
- ord
- Arbejde
- workflow
- virker
- ville
- år
- zoom