Forsterkende læring (RL) omfatter en klasse med maskinlæringsteknikker (ML) som kan brukes til å løse sekvensielle beslutningsproblemer. RL-teknikker har funnet utbredte applikasjoner i en rekke domener, inkludert finansielle tjenester, autonom navigasjon, industriell kontroll og e-handel. Målet med et RL-problem er å trene en agent som, gitt en observasjon fra omgivelsene, vil velge den optimale handlingen som maksimerer kumulativ belønning. Å løse et forretningsproblem med RL innebærer å spesifisere agentens miljø, handlingsrommet, strukturen til observasjoner og den riktige belønningsfunksjonen for målet for forretningsresultatet. I policy-baserte RL-metoder er resultatet av modelltrening ofte en policy, som definerer en sannsynlighetsfordeling over handlingene gitt en observasjon. Den optimale policyen vil maksimere den kumulative avkastningen oppnådd av agenten.
I begrensede beslutningsproblemer har agenten i oppgave å velge de optimale handlingene under begrensninger. En distinkt klasse av slike problemer eksisterer der, avhengig av staten, kan agenten bare ha lov til å velge fra en undergruppe av alle handlinger. De resterende søksmålene er avvist.
Vurder for eksempel en autonom bil som har 10 mulige hastighetsnivåer. Denne bilen kan bare få lov til å velge fra et undersett av hastighetsnivåene når den krysser et boligområde. Her er begrensningen på hastighetsnivåene bestemt av plasseringen til bilen. Slike parameteriserte begrensninger på handlingene er vanlige i mange problemer i den virkelige verden. Å løse slike problemer med RL krever å inkludere begrensningene i opplæringsprosessen. Action maskering er en tilnærming for å løse RL-problemer som involverer avvisningsbegrensninger på en prøveeffektiv måte. Som navnet antyder, innebærer det å maskere eventuelle uakseptable handlinger ved å sette samplingssannsynligheten til null. Følgende figur viser RL-syklusen med handlingsmaskering. Den består av en agent, begrensningene som bestemmer handlingsmaskene, maskene, tilstandsovergangene og de observerte belønningene.
I dette innlegget beskriver vi hvordan du implementerer handlingsmaskering med Amazon SageMaker RL bruke parametriske handlingsrom i Ray RLlib. Vi beskriver et eksempelproblem som involverer diskrete flerdimensjonale handlingsrom og flere begrensninger. For å få tilgang til hele notatboken for dette innlegget, se Eksempel på SageMaker-notatbok på GitHub.
Bruk saksoversikt
Vi tar for oss et eksempel på porteføljeoptimeringsproblem der en investor handler med flere aktivatyper for å maksimere deres totale porteføljeverdi. Porteføljen består av tre ulike aktivatyper, og en kontantbeholdning som rett og slett refererer til penger du har på bankkontoen din. I løpet av hver investeringsperiode må agenten velge mengden av hver aktivatype som de kjøper eller selger. Agenten bruker den tilgjengelige kontantsaldoen til å finansiere eventuelle kjøp av eiendeler. Det er også transaksjonskostnader knyttet til hver aktiva kjøp/salg handling. Markedsprisen på hver eiendel antas å variere over tid. Prisene er utvalgt tilfeldig, men modellert for å vise distinkt oppførsel med ulike nivåer av volatilitet. Prisklassene for de tre aktivaklassene er vist i følgende figur.
Settet med tillatte handlinger for agenten bestemmes av parametere som gjeldende totale porteføljeverdi, gjeldende kontantsaldo, antallet av hver type eiendeler som holdes og deres nåværende markedsverdi. For dette problemet håndhever vi følgende begrensninger for mulige handlinger:
- C1 – Agenten kan ikke selge flere enheter av en hvilken som helst type aktiva enn det de eier i dag. For eksempel, hvis agenten har 100 enheter av aktiva 3 på tidspunktet k i sin portefølje, kan den ikke selge 120 enheter av den eiendelen på det tidspunktet.
- C2 – Eiendel 3 anses som svært volatil av investorer. Agenten har ikke lov til å kjøpe aktiva 3 hvis den totale verdien av deres beholdning i aktiva 3 er over en tredjedel av deres totale porteføljeverdi.
- C3 – Forbrukere av RL-modellen har en moderat risikopreferanse og anser aktiva 2 som et konservativt kjøp. Som et resultat har ikke agenten lov til å kjøpe aktiva 2 når den totale verdien av aktiva 2-beholdningen krysser to tredjedeler av den totale porteføljeverdien.
- C4 – Agenten kan ikke kjøpe noen eiendeler hvis den nåværende kontantsaldoen er mindre enn $1 USD.
Sett opp miljøet
For å starte, klargjør en SageMaker notatbokforekomst via Amazon SageMaker Studio. For mer informasjon, se Bruk Amazon SageMaker Notebook-forekomster.
Deretter implementerer vi porteføljehandelsproblemet i en tilpasset Åpne AI Gym miljø og trene en RL-agent ved å bruke SageMaker RL. Et treningsmiljø gir et grensesnitt for RL-agenten for å samhandle med omgivelsene og generere belønninger og observasjoner. Miljøet for porteføljehandel er lokalisert i trading.py
modul. Vi bruker __init__
metode for å definere og initialisere noen miljøparametere. Dette inkluderer transaksjonskostnader knyttet til kjøp/salg av eiendeler, gjennomsnittlig verdi av eiendelsprisene, prisavvik og mer. Vi definerer også observasjons- og handlingsrommene i __init__
metode. Se følgende kode:
Fordi agenten handler med tre eiendeler til enhver tid, blir handlingene utført av agenten representert ved hjelp av en tredimensjonal handlingsvektor. De tre diskrete handlingene som utgjør handlingsvektoren representerer handlene i hver aktivaklasse og kan hver ha 11 mulige verdier. De 11 diskrete verdiene koder for forskjellige salgs-, kjøps- og hold-handlinger, som vist i følgende figur. For eksempel å velge en1=3 betyr at agenten selger 20 enheter av aktivatype 1. Eiendeler kjøpes og selges i multipler av 10.
Observasjonsrommet har en ordbokstruktur med to elementer. Disse representerer gjeldende handelstilstand og gjeldende handlingsmaskeverdier. Handelstilstanden er en 7×1-vektor som består av mengdene av hver eiendel som for tiden innehas av agenten, gjeldende kontantsaldo og gjeldende markedsverdi av hver av de tre eiendelene. Handlingsmasken er en 3×11 matrise med maskeverdier som tilsvarer hver mulig handling. Miljøet beregner maskeverdiene hver gang ved hjelp av en update_mask()
metode. Handlinger som bryter med noen av begrensningene C1:C4 blir tildelt en nullmaske. Verdien av masken er satt til 1 for tillatte handlinger. Se følgende kode:
I begynnelsen av hver episode, a reset()
metoden kalles for å reinitialisere handelstilstanden, observasjoner og andre parametere. Agenten starter hver treningsepisode med $1,000 USD i kontantsaldo og null beholdning i eiendeler. Hver episode består av 20 investeringsperioder.
Ved begynnelsen av hver investeringsperiode prøver agenten en handling basert på de siste observasjonene den registrerte og oppdaterer porteføljen. Dette er modellert ved hjelp av en step()
metode. Etter at porteføljen er oppdatert, regner vi om tilstanden. Handlingsmasken oppdateres også ved å ringe til update_mask()
metoden.
Belønningsfunksjonen er definert som den endelige totale porteføljeverdien og beregnes ved slutten av hver episode, som skjer etter 20 investeringsperioder.
Maskeringsmodell
Ved hvert tidstrinn returnerer miljøet ordboktilstanden og ML-modellen som representerer policyeksemplene en handling basert på denne tilstanden. En parametrisk handlingsmodell forenkler prøvetaking av kun de demaskerte (maske ≠ 0) handlingene. Her beskriver vi den parametriske handlingsmodellen som muliggjør handlingsmaskering:
Handlinger samples av modellen gjennom en Softmax-funksjon ved å bruke logittene gitt av en handlingsmodell. Denne modellen er definert i __init__
metode. Selve maskeringsatferden er implementert i forward()
metode. Her skiller vi handlingsmaskene og handelstilstanden fra ordboktilstanden hentet fra miljøet. Handlingsinnbyggingene oppnås deretter ved å overføre handelstilstanden til handlingsinnbyggingsnettverket. Deretter endrer vi verdien av innebygginger av hver handling ved å legge til logit_mod
til logittene. Legg merke til det logit_mod
er en funksjon av logaritmen til handlingsmasken. For handlinger med maske =1, vil logaritmen til maske være null, noe som etterlater innbyggingen deres uforstyrret. På den annen side, når maske=0, logaritmen til maske → −∞. Fordi Softmax(x)
→0 som x→ −∞, sørger dette for at maskerte handlinger ikke blir samplet av agenten.
La oss teste om masken fungerer som forventet. Vi setter i gang et stråletrenerobjekt og maskerer noen av handlingene og ser om treneren prøver bare de demaskerte handlingene:
Utdataene i det følgende skjermbildet viser den første handlingsmaske-arrayen.
Nå modifiserer vi maskevektorene slik at for a1, alle valg unntatt handling 8 (kjøp 30 enheter av aktiva 1); for en2 alt unntatt handling 5 (hold aktiva 2 på gjeldende tall); og for en3, alt unntatt handling 1 og 2 (selg 40 eller 30 enheter av aktiva 3) er maskert:
Nå som vi har modifisert handlingsmaske-arrayen, prøver vi å prøve en ny handling.
Agenten prøver bare de handlingene som er demaskert. Dette bekrefter at handlingsmaskering fungerer som forventet.
Resultater
Nå som miljø- og parametriske handlingsmodellen er definert, trener vi en agent til å løse porteføljeoptimaliseringsproblemet ved å bruke SageMaker RL. Vi trener en RL-agent for å lære den optimale policyen for å maksimere belønningen under begrensningene C1:C4. Vi bruker algoritmen for proksimal policyoptimalisering (PPO) i SageMaker RL for å trene RL-agenten for 500,000 XNUMX episoder. Følgende treningskonfigurasjon viser hvordan vi spesifiserer agenten som skal bruke trading_mask
som en custom_model
å bli brukt:
Agenten starter med $1,000 USD i innledende kontantsaldo. Gjennomsnittlig belønning per episode er plottet som en funksjon av treningstid, som vist i følgende diagram. Husk at vi bruker den endelige totale porteføljeverdien som belønning. Ved slutten av 20 investeringsperioder observerer vi at gjennomsnittsverdien av agentens portefølje er over $3,000 XNUMX USD.
Rydd opp
Vi sørget ikke for noen infrastruktur utover bruken av en SageMaker-notebook-forekomst. Hvis du bruker en SageMaker notatbokforekomst via Studio, kan du slå den av ved å følge instruksjonene i Slå av en åpen notatbok.
konklusjonen
I dette innlegget diskuterte vi hvordan du kan implementere handlingsmaskering for å håndheve begrensninger i RL-modellopplæring. Ved å maskere utillatelige handlinger gjør vi det mulig for agenten å prøve kun gyldige handlinger og lære den optimale policyen på en prøveeffektiv måte. Vi introduserte et porteføljeoptimeringsproblem der agenten har i oppgave å maksimere porteføljeverdien ved å handle tre aktivatyper under flere begrensninger. Vi demonstrerte hvordan man implementerer flerdimensjonal handlingsmaskering for dette problemet ved å bruke Ray RLlib. Vi trente en RL-agent for å løse problemet med begrenset porteføljeoptimalisering ved å bruke SageMaker RL.
Nå som du vet hvordan du utfører handlingsmaskering ved å bruke SageMaker RL og Ray RLlib på porteføljeoptimalisering, kan du prøve det på andre RL-problemer som involverer uakseptable handlinger. Du kan også tilpasse handlingsmaskeringskoden utviklet i dette innlegget for enklere problemer som involverer endimensjonalt handlingsrom. Vi oppfordrer deg til å bruke tilnærmingen som er utviklet her på dine RL-brukssaker og gi oss beskjed hvis du har spørsmål eller tilbakemeldinger.
Ytterligere referanser
For ytterligere informasjon og relatert innhold, se følgende ressurser:
Om forfatterne
Dilshad Raihan Akkam Veettil er en dataforsker med AWS Professional Services, hvor han engasjerer seg med kunder på tvers av bransjer for å løse deres forretningsutfordringer gjennom bruk av maskinlæring og cloud computing. Han har en doktorgrad i luftfartsteknikk fra Texas A&M University, College Station. På fritiden liker han å se fotball og lese.
Paul Budnarain er en Applied Scientist i Amazons Inventory Forecasting Systems (IFS) gruppe, og er basert i Los Angeles, California.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/portfolio-optimization-through-multidimensional-action-optimization-using-amazon-sagemaker-rl/
- :er
- $3
- $OPP
- 000
- 1
- 10
- 100
- 11
- 500k
- 7
- 8
- a
- ovenfor
- adgang
- Logg inn
- tvers
- Handling
- handlinger
- tilpasse
- Ytterligere
- Tilleggsinformasjon
- Aerospace
- Etter
- Agent
- agenter
- AI
- algoritme
- Alle
- Amazon
- Amazon SageMaker
- og
- Angeles
- søknader
- anvendt
- Påfør
- tilnærming
- ER
- Array
- AS
- eiendel
- Eiendeler
- tildelt
- assosiert
- antatt
- At
- autonom
- tilgjengelig
- AWS
- AWS profesjonelle tjenester
- Balansere
- Bank
- bankkonto
- basert
- BE
- fordi
- Begynnelsen
- Beyond
- kjøpt
- virksomhet
- kjøpe
- by
- beregnet
- beregner
- california
- som heter
- ringer
- CAN
- bil
- saken
- saker
- Kontanter
- utfordringer
- Figur
- valg
- Velg
- velge
- klasse
- klasser
- Cloud
- cloud computing
- kode
- Høyskole
- Felles
- fullføre
- databehandling
- tilstand
- Konfigurasjon
- konservativ
- Vurder
- ansett
- Består
- begrensninger
- Forbrukere
- innhold
- fortsette
- kontroll
- Tilsvarende
- Kostnad
- Kostnader
- Kryss
- Gjeldende
- I dag
- skikk
- Kunder
- syklus
- dato
- dataforsker
- Beslutningstaking
- definert
- definerer
- demonstrert
- avhengig
- beskrive
- Bestem
- bestemmes
- utviklet
- forskjellig
- diskutert
- distinkt
- distribusjon
- domener
- ned
- under
- e-handel
- hver enkelt
- effektiv
- elementer
- muliggjøre
- muliggjør
- Omfatter
- oppmuntre
- Ingeniørarbeid
- Miljø
- Hver
- alt
- eksempel
- Unntatt
- finnes
- forventet
- utforske
- forenkler
- tilbakemelding
- Figur
- slutt~~POS=TRUNC
- finansiere
- finansiell
- finansielle tjenester
- etter
- fotball
- Til
- funnet
- fra
- funksjon
- generere
- GitHub
- gitt
- Gruppe
- gym
- hånd
- skjer
- Ha
- Held
- her.
- Høy
- svært
- hold
- Holdings
- holder
- Hvordan
- Hvordan
- HTML
- HTTPS
- iverksette
- implementert
- importere
- in
- inkluderer
- Inkludert
- innlemme
- indeks
- industriell
- bransjer
- informasjon
- Infrastruktur
- innledende
- initiere
- f.eks
- instruksjoner
- samhandle
- Interface
- introdusert
- inventar
- investering
- investor
- Investorer
- involvere
- IT
- DET ER
- selv
- jpg
- Vet
- siste
- LÆRE
- læring
- Lengde
- nivåer
- ligger
- plassering
- den
- Los Angeles
- Lav
- maskin
- maskinlæring
- gjøre
- GJØR AT
- måte
- mange
- marked
- Markedspriser
- maske
- masker
- math
- Matrix
- max
- Maksimer
- Maksimerer
- maksimal
- metode
- metoder
- minimum
- ML
- modell
- modifisert
- modifisere
- Moduler
- penger
- Overvåke
- mer
- flere
- navn
- Navigasjon
- nettverk
- Ny
- neste
- bærbare
- Antall
- tall
- mange
- følelsesløs
- objekt
- Målet
- observere
- innhentet
- of
- on
- åpen
- optimal
- optimalisering
- Annen
- Utfallet
- produksjon
- egen
- eide
- parametere
- Passerer
- Utfør
- perioden
- perioder
- plato
- Platon Data Intelligence
- PlatonData
- politikk
- portefølje
- mulig
- Post
- pris
- Prisene
- Problem
- problemer
- prosess
- profesjonell
- gir
- forsyning
- kjøp
- kvantitet
- spørsmål
- tilfeldig
- RAY
- Lesning
- virkelige verden
- registrert
- refererer
- registret
- i slekt
- gjenværende
- representere
- representert
- representerer
- Krever
- bolig
- Ressurser
- resultere
- retur
- avkastning
- Belønn
- Belønninger
- Risiko
- Kjør
- sagemaker
- salg
- Forsker
- SELV
- selger
- Å Sell
- separat
- Tjenester
- sett
- innstilling
- Vis
- vist
- Viser
- ganske enkelt
- So
- solgt
- LØSE
- løse
- noen
- Rom
- mellomrom
- fart
- Begynn
- starter
- Tilstand
- stasjon
- Trinn
- Stopp
- struktur
- studio
- slik
- foreslår
- Systemer
- Ta
- Target
- teknikker
- test
- texas
- Det
- De
- Staten
- deres
- Disse
- Tredje
- tre
- tredimensjonal
- Gjennom
- tid
- til
- Totalt
- handler
- trading
- Tog
- trent
- Kurs
- Transaksjonen
- transaksjons kostnader
- Transaksjoner
- overganger
- sant
- to tredjedeler
- typer
- etter
- enhet
- lomper
- universitet
- Oppdater
- oppdatert
- oppdateringer
- oppdatering
- us
- USD
- bruke
- verdi
- Verdier
- av
- volatile
- Volatilitet
- se
- Hva
- hvilken
- utbredt
- vil
- med
- arbeid
- X
- Du
- Din
- zephyrnet
- null