zondag 24 mei 2020

Leren met letters 13 - Nieuwe insteek

Met een eigen getraind chars2vec model kom ik niet niet veel verder dan (ruim) 80% validation accuracy. Ik test eens wat het effect van mijn training is. Een setje woorden moet meer inzicht geven. Ik kies, in lijn met de meest voorkomende AI tests, voor o.a. katten en honden:

words = ['cat', 'catfish', 'catering','catt', 'kat','dog', 'dogfood',
        'hounddog','computer', 'computation', 'compiling',
        'mouse','mousetrap', 'mousewire','random']

Met het standaard model 50 doet hij dit:

 Standaard 100 vectoren:

Ik zie niet veel verschil. Maar nu mijn eigen getrainde model:

Hmmm. Dat ziet er zo op het eerste gezicht niet zo best uit.  Als we inzoomen is er gelukkig wel verschil:
Bijzonder dat ik uiteindelijk toch die 80% valacc haal hiermee. Ik test of het aan mijn hoofdletter toevoeging ligt met alternatieve charset of wellicht aan de gebruikte dataselectie.
Hmmm. Beide zo te zien. Weliswaar liggen de woorden nu iets beter uit elkaar maar de schaal is nog steeds klein vergeleken met de originele modellen. 

Een ander probleem blijft de de grote datasets en meerdere tussenstappen die ik moet maken om tot het gewenste resultaat te komen. 
Even ter herinnnering: Ik wil karakter input laten meespelen om woorden met een vergelijkbare stam een vergelijkbare betekenis mee te geven. Daarnaast moet ook de betekenis van woorden uit hun omgeving mee gaan tellen (word2vec). 

Wellicht is de training te combineren. Door een karakter woord als input te geven en de omliggende woorden als te voorspellen krijg ik wellicht gecombineerde woordvectoren. Zeker als ik ook mutaties op de woorden mee ga trainen. Ik maak dus voor de input een onehot op basis van de karakters en voor de output een onehot op basis van de (omliggende) woorden.

Uitdaging!!!



  


   

Geen opmerkingen:

Een reactie posten