Parallella gradient descent ~ Snabbare neuronnät: Förändrings-konstant som storlek minne bakåt i tiden

2017-04-18
Värdet av att visualisera och/eller pröva uppenbara varianter. Om än med den gigantiska potentiella begränsningar i vad jag kallade sub-set. Notepad lika lite nu som för 25 år sedan klarar av att ge möjlighet att styra radbrytningar. Och jag ids inte korrigera alla här.

Säg att vi istället för vektorkvantifiering beräknar medelvärdet av slumpade vektorer viktade.

Är nu vikten - säg samma för alla - kortare än sekvensen är **minsta** minnet mindre än sekvensen.

Säg att vi samtidigt har oändligt resp. kortare minne. Och gör vektorkvantifiering.

För sekvens med kortare minne som uttrycker längre minne än **minsta** finns strukturell-information etablerad i dynamik slumpmässigt dragna vektorer och tillståndet.

Är det övertränat kan vi rent av ha flera "strukturella informations svartahål" etablerade det hela som uttryckt per tillstånd senast tilldelade närmaste dragna det kan slå mellan. Vi kan också få situationen att tar vi bort ett tillstånd återskapar övriga tillståndet och dragna tillståndet på upp till det mest olika tillståndet på några dragna. Jag upplever från detta att risken för att etablera överträning med neuronnät baserade back-propagation (utan att prövat eller kontrollerat det referenser) kan vara väldigt (enormt) hög jämfört med endast 1 st. linje med gradient descent.

Separerar vi två grupper med en linje har vi ej strukturell-information annat än på nivå det ev. går att särskilja från informationen övergripande.

Har jag oändligt minne samtidigt med vad helst normalt. Ev. flera även om ej alla nivåer använda bör vara nödvändiga. Kan det separeras. Godtyckliga cluster / kurvor. Precis som neuronnät med back-propagation (ev. sub-set där vi klarar det).

D.v.s. p.s.s. som neuronnät klarar det när flera lager kan vi approximera godtyckliga funktioner (tror jag: om vi ej är i ett subset till att fritt approximera alla kurvor / separera alla kluster önskade). Men några 1000-magnituder upp till miljoner-magnituder snabbare.

Från två vektor-kvantifierande gående parallellt är nog (ev. två).

Vilket spekulerar jag är förklaringen till att äldre metoder POS-taggning m.m. presterar över neuronnät.

De utnyttjar naturligt och direkt strukturell information etablerad av människa. Det är ju vad alla dessa egentligen alltid gör även när det ibland är indirekt så som utnyttjande något tränat innan på corpus eller hand-taggade texter.

Det är som att betrakta frågan som jag gjorde hur man uttrycker fenomenet att vektor-kvantifiering i någon variant liggande under avrundningsfel kan förbättra sig i vad det genererar (oavsett förändring tillstånden).
Nå det gäller givetvis endast under förutsättning att en människa Hans eller jämförbar finns som väljer när vi bryter från pågående effekt av något delvis slumpmässigt.

Dock helt olika frågan varför slumptal större eller lika med 0 men mindre 0 kan förändra saker mycket mer än slumptal större eller lika med 0 men mindre än 0.1 (Ubuntu pushar ut felaktigt rörande 32- resp. 64-bitar kompilerade paket vilket gör vad helst från challenge-response noise till Perl's rand-funktion defekta. Dessbättre utgår åtminstone inte jag från att kritiska datorer kan vara kopplade internet alls.). Den strukturella informationen ligger här i någon mening i katalogen apt-get använder.

Det slår mig att egentligen borde man kanske inte förvånas över det. Nu är neuronnät i back-propagation inte direkt vad jag någonsin riktigt kommit till att använda. Framför allt har jag upplevt dem förr långsamt även om jag kommit att förstå från diverse publicerat sista åren att de numera är mycket snabbare. Men som jag vill förstå vad jag minns av dem är det fortfarande i grund-mekanism i princip gradient descent men där vi dessutom gör quality assurance accounting från resultatet i varje lager från det sista (styrelse kontrollerar VD, VD kontrollerar vice-vd som manipulerar the books så att VD blir sparkad istället men det fallet här motsvarar mer att vi kodat algoritmen fel, utan denna kontrollerar neråt och korrekt att vi i resp. lager kan variera antalet enheter, utifrån vad vi från tidigare här skulle betrakta som hur mycket vi vill minnas).

Och därmed här publicerat är icke-patentering säkerställd.

Intensitet och påverkan förändring

Intensitet i mening händelse per tidsenhet där för resp. händelse utnyttjar viktsystem från befintlig historik för att ge det en default intensitet. Är ej trivialt när det kommer till bedömning av tid framåt. Emellertid på uppsidan har jag normalt aldrig sett det utmanande att komma riktigt i ordning händelser i framtid även om avstånden mellan dem i intensitet när betraktat från antal dagar istället för konkret mätt intensitet ses varit desto svårare. Det senare är i någon mening när förenklat när i komplexitet så långt att man själv kan betrakta det som människa ofta bra mycket lättare att komma rätt i, inte sällan när så enkelt inte vad som kräver mer än att titta på senaste 50 titlarna på säg Yahoo News! (Google News är dock helt värdelös här: Ev. relaterat till att det är den jag normalt använder vilket kanske stör något, eller allt. att den i algoritm gör för mycket vid sidan om att publicerings-tid ordna nyheterna).


Nå intensitet kan ibland ta saker i fel riktning. Oavsett det när stale även om intensiteten för närvarande tar saker i fel riktning om korrekt väg allmänt är sannolikare är rent principiellt mer intensitet även om bara noise (och jag använder här begreppet noise i mening säg descent, vektorkvantifiering, än att vi går ut i världen och adderar brus: Vilket i det senare snarast motsvarar att mer inträffar i en geo-region även om det så vitt vi kan se är icke-relaterat önskad väg framåt).


Eller för att ge perspektiv på förändring i den begränsande sidan här om Mr Vader hade tagit med sig 1000 personer som gick runt och bara gjorde vad helst de hade lust till på The Death Star störande och hindrande teknikerna. Eller om det faktiskt ökat hastigheten genom att samla folket till att lösa det problemet, uppleva lite vi-känsla, sluta oroa sig för att propagandan från divergenterna påstår att Mr Vader och Kejsaren är onda o.s.v.


Storlek övergripande population resp. hur lika den är globalt relativt grupperingar (cluster) unika nog för att inverka har givetvis betydelse. Finland är en liten population men mycket konvergent mot hela Finland i varje historiskt existerande del-divergens synlig idag (3 - 4 st om jag minns rätt, kontra argumenterat 50 - 75 st Sverige, eller 1000 - 1250 st Kina: 1 000 000 000 / 1000 = 1 000 000 st d.v.s. Kina ~ Finland ).


Moff Jerjerrod: Lord Vader. This is an unexpected pleasure. We are honored by your presence.
Darth Vader: You may dispense with the pleasantries, Commander. I am here to put you back on schedule.
Jerjerrod: I assure you, Lord Vader, my men are working as fast they can.
Vader: Perhaps I can find new ways to motivate them.

Ett UK som driver iväg för långt ifrån UK kan bli problem

2017-04-04

Ska vi se EU som ett bredare europeiskt alternativ in i framtiden vilket det känns mer nu som viktigt än jämfört med för bara ett år sedan är det inte tillfredsställande alls att UK hamnar för långt ifrån EU. Det blir dessutom rent löjligt över så kortsiktiga rena struntsaker som kan vara aktuella i ett avtal av den här typen: det berör ju inte konkret säkerhetspolitik samtidigt som UK i sig trots storlek ekonomi i sig givet magnitud på såväl EU: samlade ekonomi resp. storleken på problematiska delar däri kan introducera några särskilda risker (tvärtom).


Vi vill inte att ett av de i storlek och förmåga att agera väsentliga svävar för långt ifrån oss. Vi vill därför att de "lämnar oss" endast i det mindre väsentliga men gör så med en god känsla av att vi minns det värde som de genom åren givit oss och med en förståelse av att vi är deras viktigaste gemenskap i Europa, och på sikt primära samarbetspartner.


Väldigt konkret tror jag att EU kan hamna ej sunt balanserat jfr andra stora aktörer som USA och Kina i annat fall. Det är lätt att ej tänka på det när EU fortfarande är anmärkningsvärt inåt fokuserade. Men det behöver ej handla om alls många år innan det här blir viktigare. Vi ska också se att vi har ett generationsskifte i bl.a. Spanien, Italien m.fl. länder politiskt som kommer vilket möjligt förändrar lite hur man ser på betydelsen av balansen utanför EU av EU relativt andra aktörer.



Förövrigt när vi betraktar UK utanför EU rörande händelseavtal m.m. så givetvis att hela området där kan tyckas tungt för UK. Och antagligen fortfarande så verkar för dem. Men jag tvivlar verkligen på att det kommer visa sig innebära svårigheter i närheten av som det typiskt framställs. Förutom den anglo-saxiska sfären inte uteslutande därför att UK är mer central internationellt än man alltid tänker på utan också bara därför att UK är en tämligen stor ekonomi som antagligen kommer utnyttja det förhållandevis stora utrymmet för nationella investeringar man har.


För euro-valutan kan det kanske tyckas underligt om man skulle mena att det samarbetet är mer osäkert om man ej bra hanterar UK. Men jag kan se om än föga troligt ändå en givet magnitud risk att se att samarbetet kan komma att bli mer ifrågasatt i övriga världen åren som kommer. Och jag menar här ej UK alls - likväl känns det givet hela det området att ej låta UK driva iväg för långt. Vi kan komma att behöva dem i mening att det kanske gör saker stabilare och vid problem något lite enklare att lösa.

LDA och LSA med Noise-Kohonen: Samt buffer-overflow-outing Ubuntu's CM för 32- vs 64-bitars kompilering

2017-03-25

Efter att det blev av att betrakta närmare PCA - Kohonen jämförelsen - att se Kohonen som en mot en stream men i övrigt kanske onödigt tidskrävande variant av PCA om man egentligen vill göra det - fick jag min anpassning av Kohonen (som jag alltid gör linjär - endimensionell, och numera med 300 double per tillstånd längs linjen - att göra intressantare något som otvetydigt kan konvergera och normalt gör så mot LDA resp. mindre intressant p.s.s. som jag tycker PSA kopplingen är det LSA).


Intressantare och antar jag trivialare för något som arbetar fel kring sådant här. Och med fel menar jag att tänka sig att man i metodik börjar med att sitta och härleda något runt matematiska relationer som när implementerade är triviala, snarare än att börja med att för enkla ekvationer testa igenom alla uppenbara varianter av dem som inte gör beräkningarna relevant mer komplexa. Så slipper man fundera över varför en av de mest effektiva composition operatorerna för semantiska vektorer ej mer beräknings-komplex än egentligen addition och multiplikation tillsammans ej berörs i publicerat om det nu inte är därför att p.s.s. sätt varför den blir blandningen av linjärt och icke-linjärt så lär den vara direkt smärtsamt svår att bevisa samband för eller rörande icke-bevisad konvergens referera till alla tusen artiklar refererande detta för Kohonen allmänt (för jämförelse snarare än just relevant composition oftast) är att jag ändrat default formen för min tidigare Kohonen-anpassning.


I princip för exempel betraktande min 300-WW variant d.v.s. ord vektorerna vilka är cirka 300 000 st (medan 300-CC och 300-FF över flergram är ett antal miljoner) för ord i indata och tänkande oss att vi tränar något där vi önskar antingen konvergens för tillstånd mot tematiska cluster eller POS. För de senare är min erfarenhet för mina 300-WW (minns ej hur det var i mina 400 stokastiska LSA vektorer de gjordes av) att få konvergens mot POS är en fråga om förhållandet mellan L1 och L2 (med 300-WW dim. reducerade via min Kohonen från 400 dim LSA i sista steget klara görande en kvadrat på varje sim värde mot resp. tillstånd och därefter L2-normerande dem, och ej betraktande normal skew för allt neuralt eller gradient som vad jag behöver hantera saknande annat än undantagsvis negativa värden med rymden efter kvadrat ungefär med medelvärde SIM på 0.5, konkret görande just kvadrat som jag senare fick gå tillbaka att verifiera eftersom det slog mig att kvadrat istället för X * abs (X) kanske inte är helt bra för värden fördelade möjligt [-1,1]) utnyttjar jag noise.


Se det så här. Clustrande eller dimensions-reducerande med Kohonen accepterar vi givet med problemet en ökad mängd smoothing / inexakthet eller hur vi vill se det. Vi får en centralitet utryckande ex. ett ämne allmänt potentiellt istället för en mängd enskilda vektorer. Lite som att se det som att vi skär en mängd decimaler. Med mina 300-vektorer gjorda Kohonen är varje dimension meningsfull att betrakta för människa. Och för något där som också var en vinnare (emedan jag för 300 dimensionerna färdiga ej hanterar vinnare annorlunda - bara likheten mellan 400 tillstånd concept och 400 tillstånd utnyttjas) inser vi att det samlade similarity värdet kan ta en försvarlig mängd slumpmässighet upp eller ner i relativ mening mot det absoluta värdet (så mycket som 10% gör relevant skillnad för vem som vinner bara för en mindre andel när vi är nära i tid - säg sista 20% av tiden d.v.s. för 300-WW cirka 2 veckor men absolut att det går att göra snabbare men jag hade 10 - 20 liknande processer som gick).


Men det är ej noise på sim jag arbetat med utan noise på hur tillståndsvektorn flyttas. Men jag vill gärna se detta jämförbart. Vi har ett utrymme runt resp. troligt korrekt tilldelad vektor som normalt oftast också är en korrekt tilldelning. Genom att addera in noise som slumpmässigt hamnar någonstans i detta utrymme täcker vi också in detta.


Säg att jag utnyttjat detta när jag gjorde mina 300-WW. Jag har cirka 300 - 400 000 400-dimensionella vektorer in och gör ungefär lika många 300-WW. Varje ord (samt en hel del URL:er också för den delen samt säg 50 - 100 000 flergram faktiskt skapat med bindestreck då jag tyckte det var lika bra praktiska skapande topics samt härledande konstanter för composition som jag trodde ev. behövdes) som finns i denna värd är en vektor så vad skulle värdet vara? Värdet är att blandningar av ord uttryckande ex. en nyhet eller ett ämne blir bättre. Det existerar en oerhörd mängd vektorer som ej är existerande ord som kommer förekomma praktiskt.


Två idéer förklarande värdet (lämnande att hindra överträning vilket ej varit en fråga för mig förrän nyligen) jag reflekterat men ej metod-defekt begått misstaget att sitta och matematisera är att:


1. För 300-WW kan vi tänka oss att ett cluster väsentligt kortare än 300 dimensioner - säg 30 - 60 eller mindre - utnyttjar i huvudsak 1 - 10 st. 300-dimensioner styrande ett tema. D.v.s. variationer på lågt värderade dimensioner kan existera. Kanske är dessa uttryckande en hel del likhet för ett ej helt litet antal i praktiken påverkande en del ej rörande mängden vinnare men när vi ställer den färdiga dimensionen relativt alla vektorer som i verkligheten kommer in inkluderande också kombinationer av många ord. Med noise kommer dessa i absolutvärde små dimensioner ej inverka om noise är ej helt litet jämfört med säg för varje vektor minsta värde.


2. Enligt som diskuterat tidigare att en stor yta / sträcka ut från de flesta sim-värden finns också samma dimension oavsett om just varje värde existerar för ett ord gäller att höga värden snarare är sällsynta exempel på vektorer som kan förekomma praktiskt vilka också är ord.


Om jag adderar noise för en position på vektorn i Perl med:


    ( rand ( 0 ) - rand ( 0 ) )

Inser man att Ubuntu's configuration management igen är helt defunct och rörande ett ämne (separera 32-bitar och 64-bitar kompilering) som till sin natur pratar buffer overflow nära nog var helst. Men praktiskt är ungefär för mig den yttersta gränsen om tränings-konstant är låg och vi är nära klara som kan accepteras (64-bitars Linux - Perl från Ubuntu apt-get utan tvivel då definition av rand är upp till argument som största värde kompilerat felaktigt: Kontrollerande Perl manual har de noterat risken här för rand men har troligt fattat det hela delvis felaktigt. Säkerhetsriskerna är dock primärt i mängd ej lokaliserat Perl då det demonstrerar att Ubuntu CM är defunct bortom all rimlighet om ansträngande sig ens litet och begripande något lite i grunderna i minne och vad det har att göra med kompilering: Jag menar varför inte kompilera allt 32-bitar och därefter kompilera om allt 64-bitar som ej gick att starta på en 64-bitars Linux? Jag hade ej gjort så normalt även om jag kanske ej ids kompilera om eller ladda ner rätt Perl på debug-datorn men är du dum i huvudet, okunnig gör du kanske så eller om mot all förmodan ej aktuellt Ubuntu är något Ubuntish annnat).


Men oavsett 0 som argument är formen för noise det jag använder. För att fånga tänkbart värde 2. i mitt resonemang förklarande värde från experiment utnyttjar jag varje position för indata-vektorn värde som övre-gräns. Vidare utnyttjar jag det minsta värdet över hela vektorn. Samt i flera varianter kvadraten av varje absolut-värde. Ett polynom antar jag att en matematiker skulle uppleva att det blir men praktiskt snarare tre olika lösningar som söker addera tre olika värden som tänkbart har betydelse.


Praktiskt resultat i särklass tydligast är:


  • Från träning cirka 30 - 50 000 ord fördelade 60 dimensioner.
  • Gäller nära klart att för höga similarity värden mot resp. tillstånd för alla 300 - 350 000 ord som har vektorer.
  • Att oavsett om resp. sådant ord är vinnare under träningen eller ens existerande bland träningsdatat är det vad man upplevt naturligt hör dit om tilldelad vinnare för tillståndet beräknande för alla ord. Samma fenomen märks när vi tilldelar värdet sim oavsett vinnare eller inte men cirka 0.05 - 0.10 i off-set similarity ovanför att vi ser några underliga (för mig typiskt off-set html-taggar, forum-talspråk, nummer och liknade vilka ej förekom alls i träningen).

Medan frågan om avvägning bias / förmåga att inkludera korrekt / antal felaktigt tilldelade först börjar bli något som existerar som fråga nedanför (säg riktigare alla dim. 0.35 +/- 0.05 - vid 0.40 finns inga för någon dimension jag sett) men tveklöst similarity av 0.35 - 0.40, med genomsnitt alla vinnare. Skillnaden är värde är enorm.


Men värdet är ej unikt för denna metod. Om jag tränat 50 000 st. lika mycket utan detta hade jag fått något jämförbart i ej felaktigt höga. Och också om överträning och andra ej helt olika problem relaterade ex. om ej Kohonen utan vanlig vektor-kvantifiering den negativa termen när felaktigt tilldelat under träningen är väsentligt svårare att hamna i för Kohonen hade vi dock (och jag har prövat just för detta exempel) haft brutala värde-reduktioner p.g.a. just sådant här d.v.s. en mängd (tiotusentals) ord-koncept som korrekt borde vara höga för en dimension som ligger lågt - och detta oavsett om körande Kohonen-anpassningen utan grannskap eller vektor-kvantifiering med cirka 20 - 30 000 av träningsdatat med cirka 10 000 tveklöst felaktiga.


Typ exempel på hur värdefulla metoder man praktiskt har nytta av ser ut: Snabba, ej adderande komplexitet kod och allt jämförbart. Men där värdet jag avser ej har med dom värdena att göra. Utan dessa värden är mer typiska kännetecken för vad som ger stora värden typiskt i övrigt.


I övrigt betraktande exempel variationer av Kohonen publicerande kännetecknas dessa av att författarna haft svårt för att Kohonen ej är vektor-kvantifering och försökt göra en variant av Kohonen som fungerar som vektor-kvantifiering. Delvis antagligen därför att de känner sig tvungna om publicerande något alls att behöva härleda diverse vilket de upplever svårt om ej klart från start som för vektor-kvantifiering.


Jag vill dock föreslå - oavsett att en del upplevt att de bevisat att det ej är så - att det går att bevisa att Kohonen kan konvergera. Nu är jag direkt värdelöst på hela området matematiska bevis och har egentligen ej varit i kulturen alls sedan teknisk fysik. Men jag fick för mig att jag gjorde det anpassande konceptet för något helt annat. I någon mening kan vi (kanske: vi använder troligen kanske och i någon mening fortsatt lite överallt) se Kohonen som Markov-processer. Vi vet ju också att ibland kan vi bevisa något om vi kan visa det för n resp. n + 1, eller något liknande. Vändande på tilldelnings-ordningen via Bayes sats (n kontra n+1), uttryckande det som Markov-process, och därefter visande konvergens för n och n + 1, och därefter räknande tillbaka visa Bayes-sats har vi förutom att ev. / något jag trodde att jag kanske gjorde då visat konvergensen har vi kod-logiken för vad jag gjorde anpassningen för. Svårt för mig givet tid att säga säkert eftersom jag vet att det som jag parametriserar för 300-WW/CC/FF att det alltid konvergerar. Jag lär ju ej sitta och göra samma sak för algoritmer där något praktiskt kan visa mig felaktig eftersom jag ej känner till några jag behöver där frågan är öppen teoretisk.


Hur som helst får vi samma utökade värde görande LDA med Kohonen-anpassningen med noise. Här gäller dock att man / jag tveklöst kommer få mycket större värde genom att generera noise följande statistiska distributioner från språket i nyheterna.


QED. Eller hur det ibland känns som något fint för läsarnas utveckling att visa vem som är the Big Dog (så kan andra med ibland framtränande osäker självbild se hur man korrigerar upp det). Och för att understryka det lite extra - och kanske för framtiden stimulera NSA eller liknande som tänkbara kunder systemet genom att peka på hur bonus-give-a-ways ser ut: Förutom att jag nu publicerat OpenSSL defekterna redan för år sedan - outing Ubuntu.


Noise, noise, noise. == Information, information, information. Även när perfekt slumpmässigt strikt lika med mer korrekt information samlad i resultatet. Här i alla fall.


PS. PSA får mig alltid att tänka på Nobelpriset (i Kemi tror jag). 1993 - 1994 kanske? Förkortningen är troligen lite fel dock. Vad vi ex. använder för att få fler exemplar av ett stycke DNA-information. Var och lyssnande på dem föreläsande om det i Uppsala minns jag.

Mongoliet är viktigt: Styrkan i ett härdat folk behöver sina bröder för att bevisa att vi är människa och ej varelse

2017-03-24

Men kan då ingen hjälpa dem här med pengarna de i rimlighet har att förvänta. Det är ej instabilt i mening möjligt energifrilösande kanske sämre kanske bättre utan bara nötande sönder när urban och rural samtidigt saknar någon region av folk flertalet ser likhet i som ej är under vad vi i rimlighet ska förvänta är nedre undre nivå. Mongolia är mycket potentiellt på så många sätt. Mycket fin infrastruktur. En del nya projekt externt-finansierade på väg. Naturresurser ej utnyttjande och fantastiskt bättre än Kongos gigantiska oupptäckta oljefält (menar jag utnyttjande mina prediktionssystem ej seismiska) saknas jungel-berg-no-cheap-road o.s.v. i utmaningen.


Det är ett så världskulturellt viktigt folk att det är fyskam att det ska behöva gå så här illa utan att någon räkt ut en ärlig arm och dragit upp dem till mänsklig nivå. Inget korrekt och inget rimligt finns i att acceptera att en hel region besmittas av den amorilska varelsen som parasiterar Mongoliets södra granne. Människorna - de av oss homo sapiens som accepterar mänskliga värderar - kommer som en när faran hotar.


"Approximately 200 ethnic Mongolian herders in Southern Mongolia have been protesting in front of government offices, demanding to be paid the subsidies they had been promised due to the grazing ban."

Från: Southern Mongolia: Herders Protest Lack of Subsidies After Grazing Ban )March 23, 2017) | UNPO.org

Egentligen är Mongolia tänkbart en mycket plattform för att kompletterande landsbanor lite västerut. Asien är inte bara Afganistan, Irak och hela det området definierat mess uppenbart för var och en av den mentala förruttnelse kult som spridit och sprider sig bland dess folk. Mongolen är annorlunda. Ett stort och modigt folk. Likt hur de en gång gav Ryssland, Iran, Indien, Kina och i ärlighet stora delar av övriga Europa indirekt ´struktur stat såväl många hundra år härskare knoppande av hästjordarnas folk (varför vi har draktronen såväl som påfågelstronen och dess tre syskon: även om vad indikerat i värdering av släktskap - vem som bär historisk rätt till en tron ej kan ha bestått länge).


Mongoliet är viktigt. Mongoliet är viktigt i typ sorterande i vissa aspekter i Persien typen. Kulturen definieras ej av landets gränser. Storhet i historien vad vi kan lära av världskulturerna är alla folks gemensamma arvrätt och här gör det oss heder att ge med båda händerna över landet, över kulturen och göra dem starka. En mur i norr.