scieee AI-readable full text Open interactive document viewer

Estudi d'algorismes d'optimització de xarxes neuronals per al reconeixement de la parla

Serran Grauvilardell, Adrià

Abstract

The main objective of this thesis is to conduct an extensive study of the impact that hyperparameters have on the performance of different optimization algorithms focused on speech recognition. This study will be carried out by varying the hyperparameters of Learning Rate and the number of layers (in the case of having an MLP as a model) and will work with the well-known optimizers, Stochastic Gradient Descent and the so-called ADAptive Moment estimation. The work will be developed with free software tools and with the help of resources provided by Professor Albino Nogueiras Rodr´ıguez. The development of this project aims to optimize and/or provide a new solution to existing problems, which, once solved, will improve the performance of this growing field of work that is speech recognition

Full text

Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Document: Mem`oria Autor: Adri`a Serr´an Grauvilardell Director: Joan Moya Mu˜noz Titulaci´o: Grau en Enginyeria de Sistemes Audiovisuals Convocat`oria: Primavera, 2024. 2 Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Cap´ıtol 1 Agra¨ıments M’agradaria comen¸car aquesta mem`oria agraint a tothom que ha fet possible aquest treball. En primer lloc, vull expressar el meu agra¨ıment als meus pares, Toni i MªAlba, i a la meva germana, Marta, per fer-me la persona que s´oc ara, per ser sempre al meu costat i ajudar-me en tot el que han pogut, malgrat els temps dif´ıcils viscuts. Tamb´e vull agrair als meus companys de Grau, que s’han convertit en una nova fam´ılia i m’han ajudat a gaudir de tots aquests anys. Un agra¨ıment especial a l’Albino Nogueiras, per cedir-me el tema del treball, proporcionar-me tota la informaci´o de la qual ell disposava i per tot el suport rebut durant aquest temps. Finalment, vull agrair al meu tutor, Joan, per ajudar-me en tot el que ha pogut, per motivar-me quan m´es ho necessitava i per adaptar-se a les meves necessitats. Moltes gr`acies a tots, sense vosaltres aquest projecte no hauria estat possible. I CAP´ ITOL 1. AGRA¨ IMENTS II Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Resum El principal objectiu d’aquest projecte de fi de grau ´es realitzar un estudi extens de l’impacte que tenen els hiperpar`ametres en les prestacions de diferents algorismes d’optimitzaci´o enfocats al reconeixement de la parla. Aquest estudi es realitzar`a variant els hiperpar`ametres de Learning Rate i de nombre de capes (en el cas de tenir un MLP com a model) i es treballar`a amb els optimitzadors, ja amb molta fama, Stochastic Gradient Descent i l’anomenat ADAptative Moment estimation. El treball ser`a desenvolupat amb eines de programari lliure i amb l’ajuda de recursos aportats pel Professor Albino Nogueiras Rodr´ıguez. Amb el desenvolupament d’aquest projecte es busca optimitzar i/o proporcionar una nova soluci´o a problemes existents que, un cop resolts permetran millorar el rendiment d’aquest camp de treball creixent que ´es el reconeixement de la parla. I CAP´ ITOL 1. AGRA¨ IMENTS II Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Abstract The main objective of this thesis is to conduct an extensive study of the impact that hyperparameters have on the performance of different optimization algorithms focused on speech recognition. This study will be carried out by varying the hyperparameters of Learning Rate and the number of layers (in the case of having an MLP as a model) and will work with the well-known optimizers, Stochastic Gradient Descent and the so-called ADAptive Moment estimation. The work will be developed with free software tools and with the help of resources provided by Professor Albino Nogueiras Rodr´ıguez. The development of this project aims to optimize and/or provide a new solution to existing problems, which, once solved, will improve the performance of this growing field of work that is speech recognition I CAP´ ITOL 1. AGRA¨ IMENTS II Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla ´ Index 1 Agra¨ıments I 2 Introducci´o 1 2.1 Objecte ................................................ 1 2.2 Abast ................................................. 1 2.3 Requeriments............................................. 1 2.4 Justificaci´o .............................................. 2 3 Estat de la q¨uesti´o 3 3.1 Intel·lig`enciaArtificial ........................................ 3 3.1.1 MachineLearning ...................................... 4 3.1.2 Processament de Llenguatge Natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.3 Xarxes Neuronals Artificials ANN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 ElsModels .............................................. 10 3.2.1 Lesneurones ......................................... 10 3.2.2 Elperceptr´o.......................................... 11 3.2.3 Multi Layer Perceptron (MLP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.4 DeepSpeech(DS) ...................................... 13 3.2.5 Forward propagation i Back propagation . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3 Elsoptimitzadors........................................... 19 3.3.1 Tipusd’optimitzadors .................................... 19 3.3.2 Funcionsd’activaci´o ..................................... 22 3.4 Elshiperpar`ametres ......................................... 23 3.4.1 LearningRate ........................................ 24 3.4.2 N´umerodecapes....................................... 25 3.4.3 Nombre de neurones per capa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4.4 Batchsize........................................... 27 3.4.5 Nombred’`epoques ...................................... 28 3.5 Reconeixementdefonemes...................................... 29 3.5.1 Aplicacions i estudis famosos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 III 2.4. JUSTIFICACI ´ O CAP´ ITOL 2. INTRODUCCI ´ O Baix cost: El cost d’execuci´o ser`a baix ja que no s’ha hagut de fer cap inversi´o en material, el cost d’aquest projecte ser`a el de les hores invertides i el preu dels ordinadors fets servir per dur a terme els entrenaments. Requeriments de l’ordinador: El codi va estar redactat per a funcionar amb CUDA. CUDA ´es una plataforma de computaci´o paral·lela i model d’Interf´ıcie de programaci´o d’aplicacions creada per Nvidia per permetre a desenvolupadors i enginyers de programari accelerar l’execuci´o dels seus codis fent servir Unitats de processament gr`afic amb capacitat CUDA per a processament de car`acter general, ´es a dir, aquest codi nom´es funciona amb les targetes gr`afiques d’Nvidia. No obstant aix`o, jo no disposava d’aquesta, aix´ı que he hagut de fer les compil·lacions destinant-hi el 100% de la meva GPU cosa que ho ha fet tot molt m´es lent. Un altre dels requeriments ´es poder treballar amb el Sistema Operatiu UNIX ja que hi ha codi en Shell (.sh). 2.4 Justificaci´o Els assistents de veu han tingut un creixement exponencial i sembla que seguir`a anant a l’al¸ca durant molt de temps ja que s’han convertit en eines que la poblaci´o fa servir di`ariament. Al realitzar aquest estudi, podrem modificar el rendiment dels algorismes existens actualitzant els seus hiperpar`ametres. D’aquesta manera podrem aconseguir una millor performance i un producte m´es atractiu pel p´ublic. 2 Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Cap´ıtol 3 Estat de la q¨uesti´o 3.1 Intel·lig`encia Artificial La Intel·lig`encia Artificial ´es un camp de la inform`atica enfocat en crear sistemes i programes que podran realitzar tasques on tradicionalment es necessitaria la intel·lig`encia i raonament d’un ´esser hum`a. Aquests sistemes i programes s´on algorismes i models que permeten a les m`aquines pensar i prendre decisions de manera similar a una persona intentant emular certes capacitats cognitives que tenim, com per exemple, el raonament, l’aprenentatge, la percepci´o o la comprensi´o i resoluci´o de problemes. Dins d’aquest camp tan ampli anomenat Intel·lig`encia Artificial hi trobem 6 grans branques: L`ogica difusa Visi´o per computador Xarxes Neuronals Artificials Processament del Llenguatge Natural Rob`otica Machine Learning Taula 3.1: Branques IA 3 3.1. INTEL·LIG` ENCIA ARTIFICIAL CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.1.1 Machine Learning El Machine Learning ´es una disciplina de la Intel·lig`encia Artificial que es centra en el desenvolupament d’algorismes que permeten als ordinadors aprendre i millorar el seu rendiment en objectius definits. Aquest aprenentatge el realitza la m`aquina de manera aut`onoma, ´es aquesta caracter´ıstica la que distingeix el Machine Learning de la programaci´o tradicional. Figura 3.1: Machine Learning [1] Components clau del Machine Learning 1. Dades: Distingim tres tipus de dades: · Dades d’entrenament (Training data) - Conjunt de dades utilitzades per entrenar el model. Cont´e les caracter´ıstiques d’entrada i les etiquetes dels resultats desitjats. · Dades de validaci´o (Validation data) - Aquestes s´on utilitzades per ajustar els hiperpar`ametres del model i prevenir l’overfitting. · Dades de prova (Test data) - Utilitzades per avaluar el rendiment final del model despr´es de l’entrenament. Comentar que les dades d’aquests conjunts no poden ser repetides, ´es a dir, no podem fer servir les dades d’entrenament per realitzar els tests. 2. Models: Els models s´on funcions matem`atiques que representen les relacions entre caracter´ıstiques d’entrada i les etiquetes de sortida. 3. Algorismes: S´on procediments o regles utilitzades per ajustar els par`ametres dels models. 4. Funcions de p`erdua: Mesuren la discrep`ancia (no correlaci´o) entre les prediccions del model i els valors reals. L’objectiu que sempre es t´e ´es el de minimitzar aquesta funci´o. 4 3.1. INTEL·LIG` ENCIA ARTIFICIAL CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O Tipus de Machine Learning 1. Aprenentatge Supervisat (Supervised Learning): L’algorisme ´es com si estigu´es aprenent amb un professor. Aquest algorisme observa les parelles d’input i prediccions que van relacionades i apr´en una funci´o que mapa desde input a l’output. Figura 3.2: Supervised Learning [2] 2. Aprenentatge No Supervisat (Unsupervised Learning): L’algorisme ´es com si estigu´es aprenent per si sol. Aquest apr´en a partir de dades sense etiquetes i l’objectiu ´es trobar estructures o patrons en aquests conjunts de dades. 3. Aprenentatge de Refor¸c (Reinforcment Learning): Un agent apr´en a prendre decisions seq¨uencials mitjan¸cant la interacci´o amb l’entorn. Aix`o ho fa rebent recompenses o c`astigs en funci´o de les seves accions (prediccions). Figura 3.3: Reinforcement Learning [2] 5 3.1. INTEL·LIG` ENCIA ARTIFICIAL CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O Proc´es a seguir pel correcte processament d’un model de Machine Learning 1. Recopilaci´o de dades: ·Recopilar dades rellevants ·Netejar les dades (tractar valors perduts o no existents, outliers, ect.) ·Normalitzar o escalar dades ·Dividir les dades en conjunts d’entrenament, validaci´o i prova. Els % dels repartiments podrien ser 80%, 10%, 10% respectivament, per exemple. 2. Selecci´o del model i algorisme: ·Triar un model i algorisme adequat per la tasca a resoldre ´es clau. 3. Selecci´o i entrenament del model: ·Ajustar els par`ametres del model utilitzant les dades d’entrenament. ·3 utilitzar r`ecniques com la Cross-Validation per avaluar el rendiment del model 4. Ajust d’hiperpar`ametres: ·S’han d’optimitzar els hiperpar`ametres del model fent servir les dades de validaci´o 5. Avaluaci´o del model: ·Mesurar el rendiment del model utilitzant les dades de prova. 6. Desplegament: ·Implementar el model en un entorn de producci´o 7. Monitoritzaci´o i manteniments: ·Monitoritzar el rendiment del model i realitzar actualitzacions peri`odiques amb noves dades. Reptes del Machine Learning 1. Dades: La qualitat i quantitat de dades ´es molt important. Les dades poc representatives o danyades ens proporcionaran models poc fiables. 2. Complexitat dels models: Models massa complexos poden produir overfitting i tenir un mal rendiment en dades de prova. 3. Computaci´o: Els models de ML requereixen una gran capacitat de computaci´o. 6 3.1. INTEL·LIG` ENCIA ARTIFICIAL CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.1.2 Processament de Llenguatge Natural El Natural Language Processing NLP) ´es una `area de la IA que es centra en la interacci´o entre ordinadors i humans a trav´es del llenguatge natural. El seu objectiu ´es permetre als ordinadors comprendre, interpretar i generar llenguatge hum`a. Figura 3.4: NLP [3] Components clau del NLP 1. Comprensi´o del llenguatge natural (NLU): ·Tokenitzaci´o: Dividir el text en unitats b`asiques com paraules, frases o tokens. ·Etiquetatge de Part-of-Speech (POS tagging): Assignar categories gramaticals a cada paraula (nom, verb, adjectiu, etc.). ·Reconixement d’Entitats Nominals (NER): Identificar i classificar entitats com noms propis, llocs, organitzacions, etc. ·An`alisi Sint`actica: Determinar l’estructura gramatical de les frases. ·An`alisi Sem`antica: Comprendre el significat de les paraules i les frases. 2. Generaci´o del Llenguatge Natural (NLG): ·Planificaci´o de Contingut: Decidir quina informaci´o incloure en el text generat. ·Planificaci´o de la Frase: Organitzar la informaci´o en frases coherents. ·Realitzaci´o de Superf´ıcie: Convertir l’estructura interna en llenguatge natural. Figura 3.5: NLG [4] 7 3.1. INTEL·LIG` ENCIA ARTIFICIAL CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O Proc´es de desenvolupament d’un sistema NLP 1. Recopilaci´o i preparaci´o de dades: ·Recopilaci´o - Obtenir grans quantitats de text rellevants ·Preprocessament - Neteja del text (eliminaci´o de signes de puntuaci´o, tokens, etc.) 2. Representaci´o del text: ·Bosses de paraules - Representaci´o simple del text on cada paraula ´es una caracter´ıstica. ·Word embeddings - Representacions vectorials de paraules que capturen significats sem`antics. ·Sentence embedding - Representacions vectorials de frase senceres 3. Entrenament d’un model: ·Selecci´o del model - Triar un model adequat per la tasca. ·Entrenament Utilitzar dades d’entrenament per ajustar els par`ametres del model. 4. Avaluaci´o i ajust d’hiperpar`ametres: ·Avaluaci´o - Mesurar el rendiment del model amb les dades de validaci´o. ·Ajust dels hiperpar`ametres - Optimitzar els par`ametres del model per millorar el seu rendiment. 5. Desplegament i manteniment: ·Desplegament - Implementar el model en un entorn de producci´o. ·Monitoritzaci´o - Supervisar el rendiment del model i actualitzar-lo amb noves dades, si cal. Reptes del NLP 1. Ambig¨uitat del Llenguatge Natural: ·Desafiament - Les paraules i les frases poden tenir m´ultiples significats segons el context. ·Soluci´o - Utilitzar models avan¸cats que capturen el context com els transformers (ex: BERT, GPT). 2. Complexitat Sint`actica i Sem`antica: ·Desafiament - Comprendre la sintaxi i el significat profund de les frases. ·Soluci´o - Aplicar t`ecniques d’an`alisi sint`actica i sem`antica, i utilitzar grans corpus d’entrenament. 3. Recursos Computacionals: ·Desafiament - Els models avan¸cats de NLP, com els transformers, requereixen una gran quantitat de recursos computacionals. ·Soluci´o - Utilitzar hardware especialitzat (GPU, TPU) i optimitzar els algoritmes. 4. Dades i Privacitat: ·Desafiament - Recopilar dades de qualitat mantenint la privacitat dels usuaris. ·Soluci´o - Implementar t`ecniques d’anonimitzaci´o i utilitzar dades sint`etiques quan sigui possible. 8 3.1. INTEL·LIG` ENCIA ARTIFICIAL CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.1.3 Xarxes Neuronals Artificials ANN Les Xarxes Neuronals Artificials s´on un conjunt de models de c`alcul inspirats en la xarxa de neurones biol`ogiques del cervell. Aquestes s´on fonamentals pel desenvolupament d’algorismes an ML i IA especialment en tasques complexes com pot ser el reconeixement de la parla, la visi´o per computador i el NLP. Figura 3.6: Representaci´o ANN [5] Components clau de les ANN 1. Neurones (Nodes o Units): ·Neurona: La unitat b`asica de c`alcul en una xarxa neuronal. Cada neurona rep una o m´es entrades, les processa, i produeix una sortida. ·Funci´o d’Activaci´o: Funci´o matem`atica que determina la sortida d’una neurona donades les seves entrades. 2. Capes: Tenim 3 tipus de capes, l’Input Layer, les Hidden Layers i l’Ouptut Layer. 3. Pesos i bias Entrenament d’una Xarxa Neuronal 1. Forward propagation: ·Proc´es pel qual les dades d’entrada es passen a trav´es de la xarxa capa per capa fins a produir la sortida. 2. Funci´o de p`erdua: ·Mesura la discrep`ancia entre la sortida que es predeix i la sortida desitjada. L’objectiu ´es minimitzar aquesta funci´o. 3. Backward propagation: Proc´es pel qual els errors es propaguen enrere a trav´es de la xarxa per ajustar els pesos. 4. Optimitzaci´o: M`etodes per ajustar els pesos de la xarxa per minimitzar la funci´o de p`erdua. Alguns exemples s´on l’SGD, l’Adam, entre d’altres. 9 3.2. ELS MODELS CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.2 Els Models Un model en ML ´es una representaci´o algor´ıtmica de les dades que utilitzem per fer prediccions sobre un nou set de dades. Els models aprenen i entenen patrons a partir de les dades amb les quals els entrenem. Aquest conjunt de dades ´es anomenat ”Training set” i el conjunt de dades que fem servir per veure quina ´es la correlaci´o de les noves prediccions ´es anomenat ”Test set”. Aquests conjunts de dades o sets no poden ser el mateix en cap circumst`ancia. 3.2.1 Les neurones Una neurona en un model MLP ´es una unitat b`asica de processament dins d’una xarxa neuronal. Inspirada en les neurones biol`ogiques del cervell hum`a, una neurona artificial ´es un element fonamental que contribueix a la capacitat d’aprenentatge i de predicci´o del model. Components d’una neurona 1. Entrades: Les entrades s´on els valors num`erics que representen les caracter´ıstiques de les dades d’entrada o les sortides d’altres capes interiors (hidden layers). 2. Pesos (weights): Els pesos s´on factors multiplicadors associats a caad entrada de la neurona. Els pesos determinen la rellev`ancia de cada entrada i s´on essencials pel proc´es d’entrenament. 3. Bias: El bias ´es un valor constant afegit a la combinaci´o ponderada de les entrades. Aquest actua com un offset que ens permet despla¸car la funci´o d’activaci´o i ajuda a la neurona a aprendre patrons m´es sofisticats. Figura 3.7: Representaci´o neurona [6] 10 3.2. ELS MODELS CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O Import`ancia de les Neurones en un MLP Les neurones s´on essencials en un MLP per diverses raons: 1. Processament de la Informaci´o: Les neurones s´on les unitats que processen i transformen les dades a trav´es de la xarxa. Cada neurona aplica una combinaci´o ponderada de les seves entrades seguit per una funci´o d’activaci´o, contribuint a la capacitat del model per aprendre de les dades. 2. Aprenentatge: Durant el proc´es d’entrenament, les neurones ajusten els seus pesos i bias mitjan¸cant t`ecniques com el backpropagation i l’optimitzaci´o basada en gradient. Aix`o permet que la xarxa millori les seves prediccions amb el temps. 3. Flexibilitat i Capacitat de Generalitzaci´o: La combinaci´o de m´ultiples neurones en capes ocultes permet a la xarxa neuronal capturar patrons complexes i generalitzar b´e a noves dades no vistes durant l’entrenament. Les neurones contribueixen a la capacitat del model per abstraure caracter´ıstiques i relacions importants dins de les dades. 4. No Linealitat: La funci´o d’activaci´o aplicada a cada neurona introdueix no linealitat al sistema, que ´es crucial per resoldre problemes complexos que no poden ser resolts amb models lineals simples. 3.2.2 El perceptr´o Un perceptr´o ´es una simple estructura matem`atica inspirada en el funcionament de les neurones biol`ogiques que pren diverses entrades, les hi aplica pesos (m´es coneguts com weights, els quals determinen la influ`encia de cada input), fa una suma ponderada i les passa a trav´es de la funci´o d’activaci´o escollida per produir un output. Els perceptrons es poden utilitzar per a tasques de classificaci´o bin`aria, on la sortida ´es 0 o 1, o per a tasques de regresi´o, on la sortida ´es un valor continu. Malgrat la seva simplicitat, els perceptrons s´on els blocs de construcci´o b`asics de les xarxes neuronals m´es complexes i poden ser utilitzats per resoldre problemes relativament senzills. 3.2.3 Multi Layer Perceptron (MLP) Un MLP ´es un tipus de xarxa neuronal que es comp´on de m´ultiples capes de neurones artificials (m´es conegudes com Perceptrons). La difer`encia d’un perceptr´o amb un MLP ´es que l’MLP t´e perceptrons enlla¸cats i els outputs dels perceptrons seran els inputs del que va a darrere. Els MLP consten de capes (layers), cada una d’aquestes amb un objectiu en concret. Les neurones s´on components molt importants pel funcionament dels MLP. Les neurones s´on unitats b`asiques de c`alcul que processen i transmeten informaci´o dins de la xarxa neuronal. 11 3.2. ELS MODELS CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O Forward propagation ´ Es el proc´es pel qual les dades d’entrada passen a trav´es d’una xarxa neuronal per produir una sortida. Aquest proc´es implica la transmissi´o de les dades a trav´es de les diferents capes de la xarxa. El resultat final ´es la prdicci´o o la sortida de la xarxa. Figura 3.16: Representaci´o forward propagation [12] Components del Forward 1. Inputs - S´on els valors inicials que s’introdueixen a la xarxa. Poden ser imatges, textos, vectors, entre d’altres. 2. Pesos - S´on els par`ametres que determinen la for¸ca de connexi´o entre neurones. Cada connexi´o entre neurones t´e un pes associat que es modifica durant l’entrenament. 3. Bias - ´ Es un valor addicional que s’afegeix a la sortida d’una neurona abans d’aplicar la funci´o d’activaci´o. 4. Funcions d’activaci´o - S´on funcions matem`atiques que introdueixen la no linealitat a la xarxa, aix´ı permeten que la xarxa aprengui i model·li relacions complexes. Proc´es del Forward 1. Capa d’entrada - Les dades passen per aquesta capa i s´on transmeses cap a la seg¨uent. 2. Capes ocultes - En el cas que tinguem hidden layers cada neurona d’aquestes rep un conjunt de valors d’entrada que s´on multiplicats pels seus pesos corresponents. Posteriorment es sumen i se’ls hi afegeix el bias. La sortida ponderada es passa a trav´es d’una funci´o d’activaci´o produint aix´ı la sortida de la nurona. Aquest proc´es es repeteix fins a arribar a la capa de sortida. 3. Capa de sortida - Aquesta capa rep les sortides de l’´ultima hidden layer, les processa de la mateixa manera i produeix la sortida final de la xarxa. La funci´o d’activaci´o de l’output layer sol ser diferent que les de les hidden layers. 18 3.3. ELS OPTIMITZADORS CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.3 Els optimitzadors Els optimitzadors s´on algorismes o t`ecniques utilitzades per ajustar els par`ametres dels models per tal que minimitzin o maximitzin la funci´o de p`erdua. Aquesta funci´o ser`a la que comparar`a els resultats entre les prediccions del model i les dades reals anal·litzades per humans. Els optimitzadors s’encarreguen de dirigir el proc´es d’aprenentatge per ajustar els hiperpar`ametres dels models per tal de minimitzar els valors de les funcions de p`erdues, comparant les prediccions amb els resultats reals. L’objectiu principal dels optimitzadors ´es minimitzar la funci´o de p`erdua. Aquesta mesura la discrep`ancia entre les prediccions del model i els valors reals. 3.3.1 Tipus d’optimitzadors Optimitzadors basats en gradient Gradient Descent - ´ Es l’optimitzador m´es b`asic i m´es utilitzat en Machine Learning. L’objectiu d’aquest ´es minimitzar la funci´o de p`erdua movent-se en la direcci´o del gradient negatiu de la mateixa funci´o. Aquest proc´es es repeteix fins que es troba un m´ınim local o global. L’equaci´o d’actualitzaci´o ´es: θt+1 =θt−η·∇θL(θt) (3.2) Figura 3.17: Gradient descent [2] 19 3.3. ELS OPTIMITZADORS CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O Stochastic Gradient Descent (SGD) - L’SGD ´es una versi´o estoc`astica del gradient descent. En comptes de calcular el gradient utilitzar totes les dades d’entrenament, l’SGD el calcula utilitzant una petita mostra aleat`oria. Aix`o fa que SGD sigui m´es eficient i ´util en conjunts de dades considerablement grans. Figura 3.18: Stochastic Gradient Descent [6] Mini-batch Gradient Descent - ´ Es una combinaci´o entre el descens del gradient est`andard i el SGD. Utilitza petits lots de dades per calcular el gradient i actualitzar els pesos, oferint un equilibri entre l’estabilitat de la converg`encia i l’efici`encia computacional. Optimitzadors amb moment Momentum - L’algoritme de moment acumula els gradients anteriors per accelerar les actualitzacions de pesos, especialment en direccions amb gradients constants. L’equaci´o per actualitzar els pesos amb moment ´es vt=γvt−1+η∇θL(θt) (3.3) Optimitzadors amb adaptaci´o de Learning Rate AdaGrad - L’AdaGrad ajusta la taxa d’aprenentatge per a cada par`ametre basant-se en els gradients anteriors. Par`ametres amb gradients grans tindran taxes d’aprenentatge m´es petites i viceversa. L’equaci´o per actualitzar els pesos amb AdaGrad ´es: θt+1 =θt−η pGt,t +ϵ∇θL(θt) (3.4) 20 3.3. ELS OPTIMITZADORS CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O RMSprop - ´ Es una millora d’AdaGrad que mant´e un valor de mitjana m`obil exponencial dels quadrats dels gradients per evitar que la taxa d’aprenentatge decreixi massa r`apidament. L’equaci´o per actualitzar els pesos amb RMSprop ´es Gt=γGt−1+ (1 −γ)(∇θL(θt))2(3.5) θt+1 =θt−η √Gt+ϵ∇θL(θt) (3.6) ADAM (Adaptative Moment Estimation) ´ Es un optimitzador que combina els avantatges dels m`etodes de gradient descent i els algoritmes d’adaptaci´o de taxa d’aprenentatge. Adam mant´e una taxa d’aprenentatge que s’adapta per a cada par`ametre, ajustant-la segons les estad´ıstiques dels gradients recents. Les equacions per actualitzar els pesos amb ADAM s´on: mt=β1mt−1+ (1 −β1)∇θL(θt) (3.7) vt=β2vt−1+ (1 −β2)(∇θL(θt))2(3.8) ˆmt=mt 1−βt 1 (3.9) ˆvt=vt 1−βt 2 (3.10) θt+1 =θt−η √ˆvt+ϵˆmt(3.11) Figura 3.19: Optimitzador Adam [13] 21 3.3. ELS OPTIMITZADORS CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.3.2 Funcions d’activaci´o Les funcions d’activaci´o determinen la sortida d’una neurona donada un conjunt d’entrades. La principal funci´o que tenen ´es introduir no-linealitat al nostre model. D’aquesta manera la xarxa podr`a aprednre i representar relacions m´es complexes de les nostres dades. Les funcions d’activaci´o m´es conegudes s´on les seg¨uents: Forma Propietats Desavantatges Sigmoid 1 1+e−x Sortida entre o i 1 (Classificaci´o bin`aria) Gradients tendeixen a zero per a valors molt grans o molt petits. TanH ex −e−x ex+e−x Sortida entre -1 i 1. Sovint utilitzada en capes ocultes Pateix per vanishing gradients per`o menys que Sigmoid ReLU Max(0, x) No-lineal i f`acil de calcular. Efica¸c per evitar vanishing gradients Podem tenir problemes (neurones mortes) si molts valors queden atrapats a 0 Leaky ReLU Max(0.01x, x) Evita el problema dels neurons morts Pot requerir m´es ”tuning” en comparaci´o amb ReLU Softmax exi Pjexj Utilitzada en l’output layer per multiclasses. Ens dona valors de probabilitat. Nom´es ´util en output layers Taula 3.2: Funcions d’activaci´o m´es reconegudes ESTARIA GUAI FICAR FOTOS DE PER VEURE COM ACTUA CADA FUNCI ´ O D’ACTIVACI ´ O (a) Sigmoid [2] (b) Tanh [2] 22 3.4. ELS HIPERPAR ` AMETRES CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O (a) ReLU [2] (b) Leaky ReLU [2] Figura 3.22: Softmax [14] 3.4 Els hiperpar`ametres Els hiperpar`ametres s´on els par`ametres de configuraci´o establerts abans de comen¸car cada entrenament. A deifer`encia dels par`ametres del model que s´on ajustats autom`aticament durant l’entrenament, com els pesos, els hiperpar`ametres s´on establerts manualment i escollir-los correctament tindr`a un impacte significatiu en el rendiment del model. Els hiperpar`ametres determinen com s’entrenar`a el model i poden influir en la capacitat d’aprendre del model ja que ajusten com s’adapta el model a les dades equilibrant l’overfitting i l’underfitting per tal d’aconseguir un perfect fitting. Tamb´e influeixen en la llargada total dels entrenaments aix´ı com en la qualitat de les presicions. En aquest projecte ens hem centrat en variar el valor de Learning Rate i el nombre de capes dels MLP, no obstant aix`o, hi ha m´es tipus d’hiperpar`ametres: 23 3.4. ELS HIPERPAR ` AMETRES CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.4.1 Learning Rate El learning rate ´es un dels hiperpar`ametres m´es importants en l’entrenament de models de machine learning, especialment en xarxes neuronals. La seva correcta elecci´o i ajust pot influir significativament en la velocitat de converg`encia i el rendiment final del model. Experimentar amb diferents valors i estrat`egies per ajustar-lo ´es clau per obtenir els millors resultats possibles. Funci´o del LR La funci´o principal del LR ´es minimitzar el valor de la funci´o de p`erdua. Aquest ho aconsegueix actualitzant els pesos del model en la direcci´o contraria al gradient de la funci´o de p`erdua. Import`ancia del LR 1. Converg`encia r`apida: Un LR ben escollit far`a que el model convergeixi a un m´ınim de la funci´o de p`erdues m´es r`apidament. 2. Estabilitat: Un valor adequat evita que el model oscil·li o divergeixi, d’aquesta manera s’assegura que les actualitzacions dels pesos es facin de manera estable. 3. Rendiment del model: Un LR `optim ajuda a trobar una soluci´o bona dins d’un temps acceptable i fent servir els recursos computocionals justos i necessaris. LR gran Si tenim un LR gran pot ser que arribem a convergir de manera r`apida, per altra banda, pot ser que degut a aquest valor es salti els m´ınims de la funci´o de p`erdues i fer que l’entrenament sigui inestable. LR petit Si tenim un LR petit aconseguirem major estabilitat i ajustament dels pesos, per altra banda, la converg`encia ser`a m´es lenta i podem quedar-nos atrapats en m´ınims locals poc profunds els qual no ens proporcionaran el valor de funci´o de p`erdua que busquem. Figura 3.23: Representaci´o tipus LR [2] 24 3.4. ELS HIPERPAR ` AMETRES CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O 3.4.2 N´umero de capes El nombre de capes en un MLP t´e un impacte significatiu en la capacitat del model per aprendre i representar les dades. Un nombre adequat de capes pot millorar la capacitat del model per capturar relacions complexes en les dades, per`o cal trobar un equilibri per evitar problemes d’overfitting i costos computacionals excessius. Experimentar amb diferents configuracions de capes ´es clau per trobar el disseny `optim per a un problema concret. Finalitat del nombre de capes en els MLP Aprenentatge de Funcions Complexes Cada capa addicional en una MLP permet al mdoel aprendre representacions m´es complexes de les dades d’entrada, ´es a dir, les primeres capes detecten i aprenen caracter´ıstiques b`asiques i les capes posteriors combinen aquestes caracter´ıstiques conegudes per aprendre conceptes m´es complexes. Capacitat de Modelatge Com m´es capes t´e un model m´es par`ametres tindr`a, cosa que augmenta la seva capacitat de modelatge i tamb´e el cost computacional al treballar amb ell. Implicacions del nombre de capes Capacitat de Generalitzaci´o ·Poques capes: Una xarxa amb poques capes pot ser insuficient per entendre dades complexes resultant en underfitting, aquest ´es un problema on un model ´es massa simple per capturar la complexitat de les dades. Com a resultat, el model t´e un rendiment pobre tant en les dades d’entrenament com en les dades de prova, ja que no pot aprendre correctament. ·Moltes capes: Una xarxa amb moltes capes t´e m´es probabilitats d’aprendre caracter´ıstiques sofisticades per`o tamb´e corre el reisc de produir overfitting, aquest ´es un problema on un model ´es massa complex i s’ajusta excessivament a les dades d’entrenament, capturant no nom´es les relacions subjacents sin´o tamb´e el soroll i les peculiaritats espec´ıfiques d’aquestes dades. Com a resultat, el model t´e un rendiment excel·lent en les dades d’entrenament per`o un rendiment pobre en les dades de prova, ja que no generalitza b´e a dades noves. 25 3.4. ELS HIPERPAR ` AMETRES CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O Figura 3.24: Tipus de ”fit” [2] Requisits Computacionals Cada capa addicional augmenta els requisits computacionals en termes de temps d’entrenament i mem`oria. Dificultat d’Entrenament Les xarxes amb moltes capes poden ser m´es dif´ıcils d’entrenar degut als vanishing gradients o exploding gradients. -Els vanishing gradients apareixen quan els gradients de la funci´o de p`erdua es fan molt petits a mesura que es fa el backpropagation. Aix`o provoca que les actualitzacions dels pesos siguin m´ınimes i l’aprenentatge es troni molt lent o s’aturi. Figura 3.25: Representaci´o Vanishing gradients [2] 26 3.4. ELS HIPERPAR ` AMETRES CAP´ ITOL 3. ESTAT DE LA Q ¨ UESTI ´ O -Els exploding gradients apareixen quan els gradients de la funci´o de p`erdua es fan molt grans a mesura que es fa el backpropagation. Aix`o provoca que els pesos de la xarxa es disparin fent que el model es torni inestable i que el model sovint no convergeixi. 3.4.3 Nombre de neurones per capa El nombre de neurones per capa fa refer`encia a la quantitat de neurones que es troben en cada capa oculta d’una xarxa neuronal. Cada neurona de cada hidden layer rep les sortides de les neurones de la capa anterior. En el cas dels nostres entrenaments d’MLP tindrem 256 neurones per capa. Com afecta al rendiment 1. Capacitat de representaci´o: Com m´es neurones hi hagi en una capa major ser`a la capacitat de la xarxa per aprendre caracter´ıstiques complexes, ´es per aix`o que un nombre petit de neurones pot limitar la capacitat del model i passar per alt moltes caracter´ıstiques de les dades amb les quals es treballa. 2. Complexitat computacional: La quantitat de neurones afecta al nombre d’iteracions (c`alculs) que haur`a de realitzar el model. El creixement del nombre d’iteracions creix exponencialment com m´es neurones es tenen. Aquest fet fa que el temps d’entrenament tamb´e es vegi afectat per aquest hiperpar`ametre. 3. Risc d’overfitting: El nombre de neurones si ´es massa elevat ens pot provocar overfitting, cosa que far`a que el model no generalitzi b´e dades noves. Per altra banda, si el nombre de neurones ´es molt baix trobarem underfitting. 4. Optimitzaci´o del model: El nombre `optim de neurones sovint s’obt´e mitjan¸cant un proc´es de tuning d’hiperpar`ametres, ajustant i provant diferents configuracions per trobar la millor capacitat de generalitzaci´o. 3.4.4 Batch size El batch size determina el nombre de mostres d’entrenament utilitzades per a cada actualitzaci´o dels pesos del model.En lloc d’actualitzar els pesos despr´es de processar cada mostra individual (SGD) o tot el conjunt d’entrenament (batch gradient descent), s’utilitzen mini-batches, que s´on subconjunts del conjunt d’entrenament. Com afecta al rendiment 1. Estabilitat i vari`ancia de l’aprenentatge: Si tenim un batch size gran tendirem a obtenir una converg`encia m´es suau i estable amb una vari`ancia m´es baixa en les actualitzacions dels gradients. Per altra banda, si el batch size ´es petit obtindrem major vari`ancia en les actualitzacions dels gradients, que pot ajudar a escapar dels m´ınims locals per`o pt ser que la converg`encia sigui m´es sorollosa. 27 4.1. UBUNTU CAP´ ITOL 4. METODOLOGIA 2. Codi obert Ubuntu ´es `ampliament utilitzat en entorns acad`emics ja que ofereix acc´es gratu¨ıt a una `amplia gamma d’eines i a un software de codi obert. 4.1.2 Desavantatges d’Ubuntu 1. Desconeixen¸ca del funcinament Encara que l’alumne hagi treballat en diverses ocasions amb Ubuntu, segueix sent un entorn amb el qual no est`a del tot familiaritzat i s’haur`a de fer una feina d’adaptaci´o sobretot al treballar amb el terminal ja que la corba d’aprenentatge ´es bastant extensa. 2. Depend`encia d’ajuda per part de la comunitat La comunitat d’Ubuntu ´es extensa i normelment est`a disposada a ajudar a nous usuaris, no obstant aix`o, la depend`encia del suport comunitari enlloc del suport directe del fabricant pot ser un impodeiment per a usuaris novells. El codi proporcionat pel professor Albino Nogueiras va ser desenvolupat en Ubuntu, ´es per aix`o que per poder disposar d’Ubuntu a l’ordinador de l’alumne es va requerir la instal·laci´o del Windows Subsystem for Linux, m´es conegut com a WSL. 4.1.3 WSL 2 El maig del 2019 es va anunciar el llan¸cament de WSL 2. El Windows Subsystem for Linux ´es una capa de compatibilitat per executar fitxers de Linux en Windows 10 ´o superior contant amb un nucli Linux real. Tot el codi ser`a tractat en Ubuntu gr`acies a WSL 2. WSL no va ser la primera opci´o que es va contemplar. Vam pensar que podr´ıem fer servir el programa Oracle VirtualBox per`o ho vam desestimar r`apidament. Per altra banda tamb´e vam desestimar fer partici´o de disc per tenir la opci´o de dos escriptoris, un en Windows i l’altre en Linux. L’´ultima opci´o a part de l’WSL era fer servir el Ravada, un escriptori virtual proporcionat per la UPC amb el qual l’alumne ja havia treballat en assignatures anteriors. No obstant aix`o, contemplant totes les opcions ens vam decantar per l’WSL ja que era clarament la millor. Figura 4.2: WSL2 [19] 34 4.2. PYTHON CAP´ ITOL 4. METODOLOGIA 4.2 Python Python ´es un llenguatge de programaci´o creat per Guido van Rossum l’any 1991. Aquest llenguatge va ser dissenyat per aconseguir m´es llegibilitat i expressar conceptes en menys l´ınies de codi que en altres llenguatges de programaci´o. En aquest TFG es far`a servir majorit`ariament la versi´o 3 de python (Python3) Python s’ha convertit en el llenguatge de programaci´o per excel·l`encia en l’`ambit de la intel·lig`encia artificial. Una de les principals raons, entre moltes altres, ´es la gran de llibreries quantitat que a hores d’ara segueixen apareixent i faciliten la creaci´o dels algorismes en aquest camp. Python ha estat el llenguatge que s’ha utilitzat per fer la programaci´o dels entrenaments, la lectura de fitxers i per importar els optimitzadors necessaris. Figura 4.3: Logo Python [20] 4.2.1 Llibreries Insta·lades A continuaci´o tenim una taula amb totes les llibreries que s’han hagut d’instal·lar pel projecte. Aquestes llibreries s’han instal·lat des del terminal d’Ubuntu seguint aquesta estructura: pip install (nom llibreria). Nom Llibreria Utilitat tqdm Eina que serveix per seguir el progr´es dels bucles i les iteracions. docopt Simplifica el proc´es de gesti´o dels arguments de l´ınia de comandes en python. torch Creaci´o de xarxes neuronals i en el processament de dades en GPUs TextGrid Manipulaci´o, an`alisi i visualitzaci´o de dades. numpy Computaci´o cient´ıfica i c`alcul d’arrays multidimensionals. utils Simplificaci´o i agilitzaci´o del desenvolupament de software. mar Processament de dades i presa de decisions. torchaudio Manipulaci´o i processament de senyals d’`audio. wandb Gesti´o i seguiment d’experimnents d’aprenentatge autom`atic. Taula 4.1: Llibreries instal·lades 35 4.2. PYTHON CAP´ ITOL 4. METODOLOGIA 4.2.2 torch (PyTorch) PyTorch ´es una de les eines m´es populars i potents per al desenvolupament de models de ML i DL. Figura 4.4: Logo Pytorch [21] Finalitats de PyTorch 1. Construcci´o de Models de Deep Learning ·Definici´o de models degut al seu API flexible. ·Capacitat d’autograd que facilita el c`alcul de gradients 2. Entrenament de Models ·PyTorch ofereix gran varietat d’optimitzadors, com per exemple Adam i SGD, optimitzadors que han estat claus pel desenvolupament d’aquest projecte. ·Permet accelerar significativament l’entrenament de models utilitzant CUDA. Avantatge el qual nohem pogut aprofitar degut a les especificacions dels ordinadors dels que dispos`avem. 3. Processament de Dades ·Inclou eines per a transformar i augmentar dades d’entrenament fet que permet millorar els rendiments dels models. ·Permet manejar grans quantitats de dades de manera eficient durant els entrenaments. 4. Infer`encia i desplegament ·Una vegada entrenat, PyTorch permet utlitzar el model per fer prediccions sobre dades noves. ·Els models es poden exportar f`acilment a formats compatibles. Principals Caracter´ıstiques de PyTorch 1. Tensors ·Els tensors s´on l’estructura de dades fonamental en PyTorch els quals tenen la capacitat de ser processats en GPUs. ·PyTorch proporciona una gran varietat d’operacions que es poden aplicar sobre aquests tensors. 36 4.2. PYTHON CAP´ ITOL 4. METODOLOGIA 2. Modules i NN ·PyTorch Pytorch inclou un sumodul que proporciona eines per a construir diversos tipus de Xarxes Neuronals. ·PyTorch t´e un altre submodul que ens permet crear M`oduls de manera senzilla. Els m`oduls s´on la classe base per tots els components de xarxes neuronals. 3. Autograd ·PyTorch permet el c`alcul autom`atic de gradients. 4. Support for Dynamic Computation Graphs ·PyTorch utilitza gr`afics computacionals din`amics, cosa que facilita el debugging i permet una major flexibilitat en la construcci´o de models. 4.2.3 torchaudio La llibreria torchaudio ´es una eina poderosa dins de l’ecosistema PyTorch. Torchaudio proporciona una varietat de fucnions per carregar, transformar, manipular i analitzar dades d’`audio. Figura 4.5: Logo torchaudio [22] Finalitats de Torchaudio 1. C`arrega d’`audio ·Torchaudio permet carregar fitxers d’`audio en diversos formats en tensors PyTorch. ·Inclou suport per a formats d’`audio comuns facilitant-ne la c`arrega i manipulaci´o. 2. Transformacions d’`audio ·Proporciona una varietat de transformacions com la Short-Time Fourier Transform (SSTFT), entre d’altres. ·Torchaudio ofereix eines per augmentar les dades d’`audio, com afegir soroll, canviar velocitat, etc. 37 4.3. LLENGUATGE C CAP´ ITOL 4. METODOLOGIA 3. Manipulaci´o de dades d’`audio ·Permet tallar, unir i resamplejar fitxers d’`audio de manera eficient. ·Proporciona funcions per normalitzar les dades, essencial per a realitzar els pre-processaments. 4. Integraci´o amb PyTorch ·Les dades d’`audio carregades amb torchaudio es representen com tensors PyTorch, facilitant la seva integraci´o directa en models de DL. ·Els tensors d’`audio poden ser transferits a GPU per accelerar el processament i entrenament. Principals Caracter´ıstiques de Torchaudio 1. C`arrega i emmagatzematge d’`audio ·torchaudio t´e funcions que permeten carregar i guardar fitxers d’`audio de manera molt eficient. ·Suport per a la majoria de formats d’`audio comuns. 2. Transformacions d’`audio ·Tenim a l’abast transformacions com la ja esmentada STFT, el Mel Spectogram o l’MCC. 4.3 Llenguatge C El llenguatge de programaxi´o C va ser creat per Dennis Ritchie i Ken Thompson a principis dels anys 70. Aquest es va crear per a tenir un llenguatge m´es senzill i flexible que l’assemblador. ´ Es un llenguatge associat al sistema operatiu UNIX i en general de nivell mitj`a-baix. No obstant aix`o hi ha llenguatges de m´es alt nivell a partir del C, com pot ser el C++. C ha estat el llenguatge a trav´es del qual hem pogut incloure els makefiles necessaris pel projecte. Aquests serveixen per automatitzar els processos de construcci´o de programes. S´on fitxers de text especialment ´utils en projectes grans amb molts fitxers de codi font, ja que permeten gestionar les depend`encies entre els diferents components del programa de manera eficient. Figura 4.6: Logo C [23] 38 4.4. LLENGUATGE SHELL CAP´ ITOL 4. METODOLOGIA 4.4 Llenguatge Shell El llenguatge shell ´es un tipus de llenguatge de programaci´o dissenyat per interactuar amb el sistema operatiu mitjan¸cant una interf´ıcie de l´ınia de comandes. El terme ”shell” fa refer`encia a l’entorn en qu`e es poden escriure i executar ordres del sistema operatiu. Aquest llenguatge ´es exclusiu pel sistema operatiu UNIX Tots els entrenaments han estat realitzats per comandes a trav´es del terminal seguint la seg¨uent estructura: Per ´ultim, el llenguatge Shell ens ser`a ´util ja que ens permetr`a executar el propi codi .sh per entrenar a trav´es del nostre terminal. Figura 4.7: Logo Shell [24] 4.5 Els ordinadors Per al desenvolupament d’aquest projecte s’han fet servir 2 ordinadors amb les seg¨uents caracter´ıstiques. Nom del producte HP Notebook -14-cf2001ns Microprocessador Intel®Core™i7-10510U Mem`oria, est`andard SDRAM DDR4-2666 de 8GB Gr`afics de v´ıdeo Gr`afics Intel UHD, AMD Radeon 530 Graphics (GDDR5 de 2 GB dedicats) Disc dur SSD de 512GB Sistema operatiu Windows 11 Homa Taula 4.2: Caracter´ıstiques ordinador 1 39 4.6. ANYDESK CAP´ ITOL 4. METODOLOGIA Nom del producte Ordinador de sobretaula HP Elite 8300 SFF Microprocessador Intel®Core™i7-3770 Mem`oria, est`andard SDRAM DDR3 de 8GB Gr`afics de v´ıdeo Gr`afics integrats a la placa abse Disc dur 250GB amb opcions de SSD Sistema operatiu Windows 10 Taula 4.3: Caracter´ıstiques ordinador 2 4.6 Anydesk Anydesk ´es un software de control remot que ha estat de gran ajuda en aquest projecte. Degut a les llargues durades dels entrenaments vam haver de buscar una soluci´o ja que necessit`avem entrenar en un ordinador que pugu´es estar ”fora de servei” durant dies sense problema. ´ Es per aix`o que vam utilitzar Anydesk per tenir el control remot d’un ordinador del que disposava i que podia estar entrenant durant dies sense causar cap inconvenient per mi o per la meva fam´ılia. El control remot va ser ´util ja que vaig estar a Noriega fent Erasmus durant aquest quadrimestre, si hagu´es estat a Catalunya aquest apartat no hagu´es estat necessari. Com ´es obvi, tot el software esmentat pr`eviament tamb´e va ser instal·lat en aquest ordinador. Figura 4.8: Logo Anydesk [25] 40 Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Cap´ıtol 5 Desenvolupament de la soluci´o 5.1 Les Xarxes Neuronals Les xarxes neuronals que hem fet servir s’han explicat pr`eviament (Deep Speech i MLP). Els motius per els quals hem decidit utilitzar aquestes xarxes s´on variats. Deep Speech ´es una arquitectura destacada i `ampliament reconeguda en el camp del reconeixement de la parla. En canvi, els resultats del MLP no seran tan bons com els de Deep Speech (com es podr`a observar a l’apartat de resultats) a causa de les seves limitacions en aquest camp. Per aquesta ra´o, els MLP no solen ser utilitzats per al reconeixement de la parla. No obstant aix`o, hem implementat tres tipus de MLP (segons el nombre de capes) per observar el seu comportament, ja que l’estructura MLP ha tingut molta rellev`ancia en el camp del ML, i per aix`o l’hem inclosa en aquest projecte. A m´es, una altra de les raons ´es que el codi de MLP ja estava implementat en els fitxers proporcionats pel professor Albino Nogueiras cosa que ens ha facilitat molt m´es aquesta decisi´o. 5.2 Els entrenaments En total s’han realitzat 31 entrenaments, 7 dels quals han estat de DS i els 24 restants MLP. Tenim 8 entrenaments per tipus de MLP, aquests sent diferenciats pel nombre de capes que es fan servir. Per a realitzar els entrenaments crid`avem el fitxer entrena.sh des del terminal a trav´es d’aquesta l´ınia de codi la qual ens permetr`a escollir el hiperpar`ametres (Learning Rate, tipus de model i tipus d’optimitzador) amb els quals volem realitzar l’entrenament: ./entrena.sh 99 10 (LR) (Model) (Optimitzador) *Aquesta comanda s’ha d’executar dins del directori correcte, ´es a dir, dins el directori on trobarem el propi fitxer que hem cridat. 41 5.2. ELS ENTRENAMENTS CAP´ ITOL 5. DESENVOLUPAMENT DE LA SOLUCI ´ O Un cop executada aquesta comanda el nostre programa anir`a a buscar els diferents fitxers escrits en python on tenim el codi dels models tant de MLP com de DS. En el cas d’un MLP la comanda a escriure seria: ./entrena.sh 99 10 (LR) MLP (Optimitzador) I en el cas d’un DS seria: ./entrena.sh 99 10 (LR) DS (Optimitzador) 5.2.1 Entrenaments de MLP Un cop hem escollit el model MLP als hiperpar`ametres de la comanda, s’executar`a el codi on es defineix el nostre MLP i es comen¸ca a entrenar. En aquest codi hi trobarem una classe que implementa un MLP de 3 capes, en el cas del codi que veurem. En la primera capa (input layer) el perceptr´o rebr`a la senyal parametritzada i afegir`a no linealitat aplicant una funci´o d’activaci´o ReLU. Aquesta funci´o tamb´e ´es la utilitzada en la seg¨uent capa, no obstant aix`o, i com ´es l`ogic, l’output layer ens retornar`a un ”log softmax del mateix ordre que el del vocabulari a recon´eixer. La llibreria torch ens facilita molt aquesta tasca ja que a part de proporcionar-nos les funcions d’activaci´o que ens interessen tamb´e ens facilita l’´us dels tensors. class MLP_3 ( torch . nn . Module ): def __init__ (self, dimIni =40 , dimInt =128 , dimSal =5) : super () . __init__ () self. capa1 = torch . nn . Linear ( in_features = dimIni , out_features = dimInt ) self. capa2 = torch . nn . Linear ( in_features = dimInt , out_features = dimInt ) self. capa3 = torch . nn . Linear ( in_features = dimInt , out_features = dimSal ) def forward(self , x): x = self. capa1 ( x) x = torch . nn. functional . relu (x) x = self. capa2 ( x) x = torch . nn. functional . relu (x) x = self. capa3 ( x) x = torch . nn. functional . log_softmax (x , dim = -1) return x. reshape (1 , 1, -1) I posteriorment trobem la funci´o que ens retorna un MLP on la primera capa rep la senyal parametritzada de dimensi´o ”dimIni” (40) i l’´ultima capa retorna un vector del mateix ordre que el vocabulari a recon´eixer ”dimSal” (5). Per ´ultim, les capes intermitges, ´es a dir, les hidden layers tenen una dimensi´o igual a ”dimInt” (128). Com podem observar, el n´umero m´ınim de capes per a realitzar un MLP ´es de 2, aix`o t´e sentit ja que com a m´ınim necessitarem una Input layer i una Output layer, ´es per aix`o que la funci´o nom´es compila quan el 42 5.2. ELS ENTRENAMENTS CAP´ ITOL 5. DESENVOLUPAMENT DE LA SOLUCI ´ O nombre de capes ´es major o igual a 2. def mlp_N (numCap =3, dimIni =40 , dimInt =128 , dimSal =5 , clsAct =ReLU () , clsSal = LogSoftmax ( dim = -1) ): if numCap < 2: capas = [ torch . nn . Linear ( dimIni , dimInt )] capas . append ( clsAct ) for _in range ( numCap - 2) : capas . append ( torch . nn . Linear ( dimInt , dimInt )) capas . append ( clsAct ) capas . append ( torch . nn . Linear ( dimInt , dimSal )) capas . append ( clsSal ) capas . append ( torch . nn . Flatten (2) ) return torch . nn . Sequential (* capas ) Tal com s’ha comentat pr`eviament, en aquest projecte hem realitzat entrenaments on hem implementat models de 2, 5 i 8 capes. Per aconseguir variar el nombre de capes vam afegir una petita part de codi al fitxer shell que ens va permentre explorar el possible Under i Over fitting. if [$MODELO == MLP ]; then echo introdueix el numero de capes per MLP read NUM_CAPES NUM_CAP=$NUM_CAPES DIM_INT=${ DIM_INT : -256} NOM_EXP=$NOM_EXP . $MODELO.$NUM_CAP . $DIM_INT red =" mlp_N ( numCap = $NUM_CAP , dimIni = numCof , dimSal = tamVoc , dimInt = $DIM_INT )" Com podem veure el nombre de neurones que tindrem en les hidden layers dels nostres models MLP ser`a sempre igual a 256, aquest nombre representat amb la variable ”DIM INT”. Un cop compilat el programa l’entrenament comen¸car`a. A continuaci´o veurem les diferents estructures dels MLP segons el nombre de capes escollit. 43 5.3. RESULTATS FINALS CAP´ ITOL 5. DESENVOLUPAMENT DE LA SOLUCI ´ O 5.2.3 Durades dels entrenaments Quan parlem del nombre d’iteracions ens referim a la quantitat de c`alculs que el nostre model ha de realitzar en total per a realitzar les prediccions. El nombre d’iteracions que tindrem amb els models MLP ser`a molt petit en comparaci´o al nombre total d’iteracions dels models de Deep Speech. El fet de tenir tantes Fully Connected Layers i tenir 2048 nodes fa que tinguem un nombre gegant d’iteracions. Cosa que ens far`a tenir un temps d’entrenament molt m´es llarg. Aquesta difer`encia la podem veure clarament en la seg¨uent taula. Temps d’entrenament aproximat (hores) 2 Capes (MLP) 1 5 Capes (MLP) 2.5 8 Capes (MLP) 4 Deep Speech 72 Taula 5.2: Durades dels entrenaments La suma d’hores totals destinades a entrenaments ha estat de: 8 * 1 (entrenaments 2 capes) + 8 * 2.5 (entrenaments 5 capes) + 8 * 4 (entrenaments 8 capes) + 72 * 7 (entrenaments DS). Si realitzem aquesta suma acabarem amb un total de 564 hores. Com es pot observar clarament, el temps d’entrenament aproximat dep´en molt del tamany dels models ja que aquest va relacionat amb el nombre d’iteracions que la nostra m`aquina ha de computar. No obstant aix`o podem veure una difer`encia molt gran de temps transcorregut entre MLP i DS. Tamb´e recalcar que aquests temps d’entrenament s´on utilitzant la GPU en comptes de CUDA, fet que fa que els temps siguin molt m´es elevats dels que a priori haurien de ser. 5.3 Resultats finals Aqu´ı hi trobarem un seguit de taules que resumeixen els resultats obtinguts. Si es volen veure de manera extensa s’haur`a de consultar l’apartat dels annexes on s’hi trobar`a absolutament. Learning Rate Self loss Self correlation 10e-3 - - 10e-4 0.6126 80.64% 10e-5 0.6310 79.84% 10e-6 1.1064 65.48% Taula 5.3: Resultats Deep Speech amb l’optimitzador Adam En aquesta taula podrem observar els millors resultats obtinguts al llarg de tot el projecte. L’entrenament amb el LR = 10e-3 no va funcionar i deixava d’entrenar durant la primera `epoca, ´es per aix`o que no tinc informaci´o sobre aquests hiperpar`ametres. 50 5.3. RESULTATS FINALS CAP´ ITOL 5. DESENVOLUPAMENT DE LA SOLUCI ´ O Per altra banda podem veure com el LR=10e-4 i LR=10e-5 ens d´ona un resultat molt semblant. Aquest seran les millors prediccions que veurem als resultats, no obstant aix`o encara no arribem a un rendiment excel·lent. El fet que els millors rendiments ens els aporta LR=10e-4 i LR=10e-5 ens fa pensar que la millor opci´o de LR ha d’estar entre mig d’aquests dos valors i que si busqu´essim el millor rendiment d’aquest model fent servir DS haur´ıem de realitzar nous entrenaments amb un LR entre aquests dos n´umeros. Com podem veure als resultats extensos la disminuci´o de la funci´o de p`erdues ´es progressiva i no veiem cap fluctuaci´o. La correlaci´o tamb´e augmenta progressivament, fet que ens fa pensar que no ens hem saltat cap m´ınim i hem convergit en una bona soluci´o. Learning Rate Self loss Self correlation 10e-3 0.8617 71.96% 10e-4 1.0078 68.45% 10e-5 1.9259 44.39% 10e-6 3.7770 12.04% Taula 5.4: Resultats Deep Speech amb l’optimitzador SGD El millor rendiment el veiem amb LR=10e-3, no obstant aix`o, si observem els resultats extensos veurem que la precisi´o de les prediccions va arribar al 80% durant l’´ultima `epoca. Aix`o ens fa pensar que al tenir un LR gran vam sobrepassar un m´ınim i vam acabar tenint un resultat de correlaci´o molt pitjor al que ens pot proporcionar aquest model. Per altra banda le disminuci´o de la correlaci´o ´es progressiva amb la resta de LR, per tant el problema que ens hem trobat amb LR=10e-3 no el trobarem a la resta d’entrenaments. Una cosa curiosa amb la que ens hem trobat bastant en aquest projecte ´es que en moltes ocasions la correlaci´o es queda encallada a 12.04% i no varia, no obstant aix`o la funci´o de p`erdues si que sol seguir disminuint. Aix`o ho podem veure amb el LR=10e-6 on la correlaci´o no varia des del principi de la 2a `epoca fins al final del propi entrenament. Com podem observar, els entrenaments de Deep Speech amb l’optimitzador Adam s´on millors en general als que utilitzen SGD. Tamb´e podem observar que en ambd´os casos un LR gran ens proporciona millor resultat que no pas un LR petit. Learning Rate Self loss Self correlation 10e-3 2.0957 38.98% 10e-4 2.0596 39.83% 10e-5 2.1258 38.46% 10e-6 2.2478 35.83% Taula 5.5: Resultats Multi Layer Perceptron amb l’optimitzador Adam constant 2 capes 51 5.3. RESULTATS FINALS CAP´ ITOL 5. DESENVOLUPAMENT DE LA SOLUCI ´ O Els resultats la veritat ´es que s´on molt semblants independentment del LR. Una correlaci´o tan baixa era esperable en aquests entrenaments, de fet els vam realitzar per veure com es comportaria el model quan aquest ´es ”under-trained”. Els resultats obtinguts amb 2 capes han estat sorprenents i molt competents amb models de m´es capes, cosa que personalment no m’esperava. Podem veure algunes fluctuacions en la funci´o de p`erdues al llarg de l’entrenament amb LR=10e-3 per`o la loss i la correlaci´o augmenten i disminueixen progressivament en la resta d’entrenaments. Learning Rate Self loss Self correlation 10e-3 2.1028 39.04% 10e-4 2.2105 36.73% 10e-5 2.4194 32.49% 10e-6 2.9130 23.49% Taula 5.6: Resultats Multi Layer Perceptron amb l’optimitzador SGD constant 2 capes En aquest cas podem veure clarament que el model funciona considerablement millor amb un LR gran. El LR=10e-6 destaca per la mala precisi´o, aix´ı com la resta de valors de LR s´on bastant estables la precisi´o obtinguda amb el LR m´es petit ´es molt dolenta. De fet podem observar com al principi dels entrenaments la correlaci´o ´es d’aproximadament un 2.3% mentre que a la resta d’entrenaments est`a entre el 20 i 30%. Aquest fet ens podria dir que si els entrenaments f´ossin m´es llargs, ´es a dir, de m´es `epoques pot ser que un LR m´es petit ens don´es millor soluci´o ja que el progr´es ha estat millor en comparaci´o a altres valors de LR. Aix`o podria ser perqu`e el model encara no ha convergit en un m´ınim. Com podem veure en general, l’optimitzador Adam ens aporta un millor resultat en general quan el model ´es un MLP de 2 capes. Learning Rate Self loss Self correlation 10e-3 2.0663 39.59% 10e-4 1.9415 42.35% 10e-5 2.0334 40.24% 10e-6 2.1802 37.00% Taula 5.7: Resultats Multi Layer Perceptron amb l’optimitzador Adam constant 5 capes En aquest cas un valor de LR relativament grn ens aporta el millor resultat. Els valors de loss i correlaci´o en els 4 entrenaments disminueixen i augmenten progressivament respectivament, ´es a dir, no ”salten” de m´ınim local. No obstant aix`o, la precisi´o segueix sent baixa i no ho podr´ıem considerar un bon model. 52 5.3. RESULTATS FINALS CAP´ ITOL 5. DESENVOLUPAMENT DE LA SOLUCI ´ O Learning Rate Self loss Self correlation 10e-3 2.0147 40.62% 10e-4 2.1746 37.12% 10e-5 2.6248 27.22% 10e-6 3.4221 12.04% Taula 5.8: Resultats Multi Layer Perceptron amb l’optimitzador SGD constant 5 capes En aquest cas podem veure com un LR gran ´es el que ens d´ona millor precisi´o. Tamb´e podem observar que com m´es petit el LR pitjor resultat. Destacar que amb LR=10e-6 ens torna a passar que la correlaci´o s’estabilitza a 12.04% i no varia. Amb LR=10e-5 tamb´e hi ha una `epoca on la correlaci´o s’estabilitza a 12.04% per`o despr´es segueix progressant adequadament. A la resta d’entrenaments la correlaci´o augmenta progressivament. Com podem observar i veiem que sol passar, l’optimitzador Adam ens proporciona millors resultats i m´es estables que l’SGD. El millor entrenament d’SGD ens aporta un resultat competent amb Adam per`o la resta d’entrenaments s´on considerablement pitjors que els de l’Adam amb els mateixos valors. Personalment aquests entrenaments m’han decepccionat bastant ja que si fem les comparacions dels MLP de 2 i 5 capes no s´on tan diferents. Learning Rate Self loss Self correlation 10e-3 2.2991 35.27% 10e-4 1.9484 42.17% 10e-5 2.0346 40.22% 10e-6 2.2373 35.38% Taula 5.9: Resultats Multi Layer Perceptron amb l’optimitzador Adam constant 8 capes Altra vegada observem resultats molt estables fent servir Adam. La millor precisi´o ens la d´ona un LR=10e-4 i tant LR petit com gran destaquen negativament. AMb LR=10e-3 observem fluctuacions petites per`o en general tots els entrenaments han tingut un augment i disminuci´o de la loss i correlaci´o progressives. Learning Rate Self loss Self correlation 10e-3 2.0198 40.56% 10e-4 2.2775 35.12% 10e-5 3.1695 17.14% 10e-6 3.6327 12.04% Taula 5.10: Resultats Multi Layer Perceptron amb l’optimitzador SGD constant 8 capes 53 5.4. DIFICULTATS TROBADES CAP´ ITOL 5. DESENVOLUPAMENT DE LA SOLUCI ´ O Podem observar com el LR m´es gran ´es el que ens proporciona els millor resultats. Altra vegada ens trobem amb la correlaci´o estancada a 12.04% en molts punts dels entrenaments amb LR=10e-4, LR=10e-5 i LR=10e-6, aquest ´ultim tenint aquesta correlaci´o durant m´es de 8 `epoques. No obstant aix`o la funci´o de p`erdues segueix disminuint progressivament. La intenci´o d’aquests entrenaments era fer ”over-training” per`o ens hem trobat amb uns resultats bastant semblants als que hem vist amb MLPs de 2 i 5 capes cosa que ens ha sorpr´es bastant. 5.4 Dificultats trobades S’ha anat progressant adequadament durant la llargada del projecte ja que ho ten´ıem tot molt ben estructurat per`o arribar al punt de poder entrenar sense trobar cap tipus de problema ha estat el m´es complicat amb difer`encia. El primer problema amb el qual ens vam trobar va ser que el codi estava escrit pera sistema operatiu UNIX, problema que es va solucionar incorporant WSL2 als ordinadors utilitzats. posteriorment vam tenir problemes per fer les compil·lacions dels fitxers, ´es per aix`o que vam haver d’afegir els makefiles necessaris i vam instal·lar totes les llibreries que ens feien falta. Un cop vam aconseguir compilar, el programa petava ja que no es detectava CUDA degut a que els ordinadors utilitzats no disposen d’una targeta gr`afica Nvidia, ´es per aix`o que es va modificar una part del codi per destinar el 100% de la GPU a aquestes compilacions. Els fitxers modificats van ser el mod ls,mud ls imad ls i els canvis realitzats van ser substitu¨ır self.device = ’cpu ’ A tots els llocs on trob`avem self. device = torch . device ( ’cuda ’ if torch . cuda . is_available () else ’cpu ’) Com ´es l`ogic els temps d’entrenament despr´es de fer aquests canvis van augmentar considerablement en comparaci´o a si tingu´essim una targeta gr`afica Nvidia. Al tenir uns temps d’entrenament tan elevats i el 100% de la GPU destinada, l’ordinador no podia realitzar cap altra tasca i no permetia avan¸car en cap altre aspecte. ´ Es per aix`o que vam optar per fer la majoria d’entrenaments en un ordinador que no era tan necessari. L’alumne, a l’estar fent un semestre d’intercanvi a Noruega va haver de fer servir una eina de Software explicada pr`eviament que va permetre connectar-se a l’ordinador on es van fer la majoria d’entrenaments de manera remota. 54 Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Cap´ıtol 6 Pressupost El cost d’aquest projecte ha estat de 0 euros ja que ja contava amb tots els elements que he fet servir per al seu desenvolupament. No obstant aix`o, aproximar´e el cost del material fet servir i hi afegir´e les hores invertides, les quals seran la gran despesa del projecte. S’ha invertit unes 450 hores amb un valor de 35 euros cada una, fent una suma total de 15.750€. Si a aquest valor li sumem el preu estimats dels ordinadors el qual hem establert a 1.200€ens quedar`a una suma total de 16.950€. Com es pot observar, hem mantingut el cost del projecte baix ja que els ordinadors que hem utilitzat que han estat l’´unic material fet servir no suposen una gran despesa. 55 Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Cap´ıtol 7 An`alisi i valoraci´o de les implicacions ambientals i socials En el context d’aquest projecte, cal destacar que els entrenaments de Machine Learning solen ser cars computacionalment ja que normalment es treballa amb grans volums de dades i hi ha una gran quantitat d’iteracions, fet que es tradueix en un ´us considerable d’energia. En el nostre cas en espec´ıfic la situaci´o s’ha vist agreujada ja que hem hagut de fer servir la GPU al 100% per realitzar totes les iteracions. La ra´o principal ´es que no dispos`avem de hardware Nvidia amb suport per CUDA ja que aquest optimitza significativament els processos de c`alcul. Degut a aix`o els nostres entrenaments han requerit un temps de c`alcul molt m´es llarg del que s’esperava, fet que ha augmentat el consum energ`etic considerablement. 56 Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Cap´ıtol 8 Conclusions i proposta de futur 8.1 Conclsuions En primer lloc, podem dir que s’han realitzat tots els entrenaments que vol´ıem incloure en aquest projecte i despr´es d’analitzar els resultats d’aquests podem arribar a les seg¨uents conclusions: El model de Deep Speech ens d´ona unes prediccions notablement millors que els models MLP, sent les seves prediccions gaireb´e dues vegades m´es efectives. Si ens centrem amb MLP podem veure que la tend`encia ´es obtenir un resultat semblant en el millor entrenament entre Adam i SGD per`o els resultats d’Adam s´on molt m´es estables. Els valors de Learning Rate grans s´on els que ens proporcionen millors prediccions quan fem servir l’optimitzador SGD, en canvi, l’optimitzador Adam funciona millor amb un Learning Rate 10 vegades m´es petit. Adam reacciona millor a un LR=10e-4, i SGD amb LR=10e-3. Els pitjors resultat els obtindrem amb el LR=10e-6 en ambd´os optimitzadors per`o SGD destaca per obtenir les pitjors prediccions en tots els entrenaments realitzats amb aquest optimitzador. En general no ens pens`avem que el nombre de capes no fos rellevant ja que les precisions obtingudes s´on bastant semblants independentment de les profunditats dels nostres models MLP. A part d’aix`o, s’han obtingut els resultats esperats, encara que la precisi´o ha estat m´es baixa del barem que vol´ıem superar. Per altra banda comentar que la planificaci´o de tasques i programaci´o temporal que vam realitzar al principi del projecte s’ha seguit adequadament i hi hem destinat el temps aproximat que vam establir. 57 8.2. PROPOSTA DE FUTUR CAP´ ITOL 8. CONCLUSIONS I PROPOSTA DE FUTUR 8.2 Proposta de futur 1. Realitzar m´es entrenaments de DS afinant m´es els valors de LR per veure si es pot superar el 90% de correlaci´o. 2. Implementar nous optimitzadors i estudiar l’impacte d’altres hiperpar`ametres com el batch size. 3. Com que hem en aquest projecte s’ha realitzat la implementaci´o dels entrenaments, dur a terme la verificaci´o d’aquests. 58 Estudi d’algorismes d’optimitzaci´o de xarxes neuronals per al reconeixement de la parla Refer`encies 1. Figura representativa ML. Available also from: https://www.linkedin.com/pulse/descubre-todolo-que-necesitas-saber-sobre-el-machine-learning-/. 2. AL-JUBOURI, Bassma. Machine Learning for Engineers - TMM4128. Trondheim, Norge: Norges teknisk-naturvitenskapelige universitet, NTNU, Spring 2024. 3. NLP. Available also from: https://www.linkedin.com/pulse/naturallanguageprocessingabinaya-s-lsvkc/. 4. NLG. Available also from: https://bootcampai.medium.com/nlp-nlu-y-nlg-cu%C3%A1l-es-ladiferencia-una-gu%C3%ADa-completa-a6b5f6db1d9a. 5. ANN. Available also from: https://data-flair.training/blogs/artificial-neural-networksfor-machine-learning/. 6. MONTORO, Albert Mosella. Gesti´o i Distribuci´o de Senyals Audiovisuals. terrassa, Catalunya, Espanya: Universitat Polit`ecnica de Catalunya, UPC, Tardor 2023. 7. Tipus de layers. Available also from: https://www.researchgate.net/figure/StandardMLParchitecturewhereeachlayerisfullyconnectedwiththeadjacentlayers_fig1_ 355148120. 8. RNN. Available also from: https://sudarshan-s.medium.com/recurrent-neural-network-rnn20a619190586. 9. Sequence-to-sequence. Available also from: https : / / pytorch . org / tutorials / intermediate / seq2seq_translation_tutorial.html. 10. Fully Connected Layer. Available also from: https://www.oreilly.com/library/view/tensorflowfor-deep/9781491980446/ch04.html. 11. Esquema Backpropagation. Available also from: https://ai.stackexchange.com/questions/31566/ different-ways-to-calculate-backpropagation-derivatives-any-difference. 12. Esquema Forward propagation. Available also from: https://www.analyticsvidhya.com/blog/2023/ 01/gradient-descent-vs-backpropagation-whats-the-difference/. 13. XENONSTACK. What is ADAM Optimization algorithm. Available also from: https://www.xenonstack. com/glossary/adam-optimization. 14. Softmax. Available also from: https://www.researchgate.net/figure/Graphic-representationof-the-softmax-activation-function_fig5_348703101. 59