	{"id":21374,"date":"2020-11-25T09:37:20","date_gmt":"2020-11-25T09:37:20","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=news&#038;p=21374"},"modified":"2024-09-20T17:45:32","modified_gmt":"2024-09-20T16:45:32","slug":"how-to-train-a-language-model-from-scratch-without-any-linguistic-knowledge","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/br\/blog\/how-to-train-a-language-model-from-scratch-without-any-linguistic-knowledge\/","title":{"rendered":"Como treinar um modelo de linguagem do zero sem nenhum conhecimento lingu\u00edstico"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column avada-news-bloc-image\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:left;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"300\" height=\"74\" title=\"M\u00e9dio Blog\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-300x74.png\" alt class=\"lazyload img-responsive wp-image-60582\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%274000%27%20height%3D%27992%27%20viewBox%3D%270%200%204000%20992%27%3E%3Crect%20width%3D%274000%27%20height%3D%27992%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-200x50.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-400x99.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-600x149.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-800x198.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-1200x298.png 1200w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 800px\" \/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-padding-top:10px;--awb-padding-right:10px;--awb-padding-bottom:10px;--awb-padding-left:10px;--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><p>NOT\u00cdCIAS \/ TECNOLOGIA AI<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p>25 de novembro de 2020<br \/>\nNeste artigo, Amale El Hamri, Cientista S\u00eanior do Data na Artefact Fran\u00e7a, explica como treinar um modelo de linguagem sem que o pr\u00f3prio usu\u00e1rio tenha conhecimento da linguagem. O artigo inclui dicas sobre onde obter o data de treinamento, quanto data o senhor precisa, como pr\u00e9-processar o data e como encontrar uma arquitetura e um conjunto de hiperpar\u00e2metros que melhor se adaptem ao seu modelo.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-3\" style=\"--awb-text-color:#000000;\"><p data-selectable-paragraph=\"\"><strong><span style=\"color: #ff0066;\">TLDR<\/span><\/strong><\/p>\n<p id=\"d30c\" class=\"ii ij dn ik b il im hp in io ip ht iq ir is it iu iv iw ix iy iz ja jb jc jd df ek\" data-selectable-paragraph=\"\">Este artigo explica como criei meu pr\u00f3prio modelo de linguagem em coreano, um idioma complexo com treinamento limitado data. Aqui o senhor poder\u00e1 aprender como treinar um modelo de idioma sem ter o luxo de entender esse idioma. O senhor encontrar\u00e1 dicas sobre onde obter o data de treinamento, a quantidade de data necess\u00e1ria, como pr\u00e9-processar o data e como encontrar uma arquitetura e um conjunto de hiperpar\u00e2metros que melhor se adaptem ao seu modelo.<\/p>\n<p><em>Meus principais aprendizados s\u00e3o:<\/em><\/p>\n<p id=\"fbfb\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Cole\u00e7\u00e3o Data:<\/p>\n<ul class=\"\">\n<li id=\"c08c\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Quando a Wikip\u00e9dia n\u00e3o tem volume suficiente ou n\u00e3o \u00e9 usada o suficiente por falantes nativos do idioma a partir do qual o senhor deseja treinar seu modelo de idioma, uma boa op\u00e7\u00e3o \u00e9 combinar a Wikip\u00e9dia com outras fontes data, como o CommonCrawl.<\/li>\n<\/ul>\n<p id=\"f465\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Volume Data:<\/p>\n<ul class=\"\">\n<li id=\"9d15\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Escolha os documentos que melhor representam o idioma coreano. Um n\u00famero excessivo de documentos n\u00e3o seria \u00fatil, pois a melhoria marginal do desempenho seria muito pequena em compara\u00e7\u00e3o com o enorme tempo de treinamento.<\/li>\n<li id=\"d32b\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Escolha documentos que contenham as palavras mais usadas no idioma coreano.<\/li>\n<li id=\"b6cc\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Encontrar uma arquitetura que consiga modelar a complexidade do treinamento data.<\/li>\n<li id=\"c290\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Encontrar a combina\u00e7\u00e3o certa de par\u00e2metros de regulariza\u00e7\u00e3o para n\u00e3o se ajustar demais.<\/li>\n<\/ul>\n<p id=\"2e04\" class=\"hk hl dn ce hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ek\"><strong><span style=\"color: #ff0066;\">Introdu\u00e7\u00e3o<\/span><\/strong><\/p>\n<p class=\"hk hl dn ce hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ek\">Se o senhor ainda n\u00e3o sabe, a PNL teve uma grande onda de aprendizagem por transfer\u00eancia nos \u00faltimos dois anos. A ideia principal \u00e9 reutilizar modelos de linguagem pr\u00e9-treinados para outra tarefa de PLN, como a classifica\u00e7\u00e3o de texto. Um modelo de linguagem \u00e9 um modelo de aprendizagem profunda que, dada parte de uma frase, \u00e9 capaz de prever a pr\u00f3xima palavra da frase. A intui\u00e7\u00e3o para entender isso \u00e9 que esse tipo de modelo compreende muito bem a estrutura do idioma, a gram\u00e1tica, o vocabul\u00e1rio, e o objetivo \u00e9 \u2018transferir\u2019 esse conhecimento para outros modelos downstream.<\/p>\n<div class=\"gt gu gv gw aj gx\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy jr\">\n<div class=\"hd s gv he\">\n<div class=\"js hg s\">\n<div class=\"gy gz t u v ha aj bm hb hc\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload tq tr t u v ha aj c aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0maA5NXtXpMp8KerA.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0maA5NXtXpMp8KerA.png\" data-sizes=\"auto\" data-orig-sizes=\"700px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271020%27%20height%3D%27433%27%20viewBox%3D%270%200%201020%20433%27%3E%3Crect%20width%3D%271020%27%20height%3D%27433%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0maA5NXtXpMp8KerA.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0maA5NXtXpMp8KerA.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0maA5NXtXpMp8KerA.png 640w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0maA5NXtXpMp8KerA.png 700w\" alt=\"Image for post\" width=\"1020\" height=\"433\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p id=\"8777\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\" style=\"text-align: center;\"><em>Exemplo: uma receita simples sobre como melhorar um classificador de texto usando o ajuste fino<\/em><\/p>\n<p id=\"d4c8\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Esta figura resume o m\u00e9todo ULM Fit que usei para treinar meu modelo de linguagem e, portanto, ajust\u00e1-lo e transferi-lo para um classificador de texto.<\/p>\n<ul class=\"\">\n<li id=\"73f0\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Etapa 1: Treinar um modelo geral de linguagem em um grande corpus de data no idioma de destino. Esse modelo ser\u00e1 capaz de entender a estrutura do idioma, a gram\u00e1tica e o vocabul\u00e1rio principal.<\/li>\n<li id=\"cd1a\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Etapa 2: Fa\u00e7a o ajuste fino do modelo de linguagem geral para o treinamento de classifica\u00e7\u00e3o data. Ao fazer isso, o modelo aprender\u00e1 melhor a representar o vocabul\u00e1rio usado no corpus de treinamento.<\/li>\n<li id=\"797c\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Etapa 3: Treine um classificador de texto usando o modelo de linguagem pr\u00e9-treinado e bem ajustado. Esse m\u00e9todo permite que o modelo compreenda as palavras em seu contexto. Al\u00e9m disso, o uso de um modelo de linguagem pr\u00e9-treinado permite que o senhor treine o classificador com pouqu\u00edssimos exemplos de treinamento (apenas 400 textos por r\u00f3tulo seriam suficientes).<\/li>\n<\/ul>\n<p id=\"819b\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">J\u00e1 sabemos que a classifica\u00e7\u00e3o de texto funciona muito bem em ingl\u00eas, franc\u00eas, alem\u00e3o, espanhol, chin\u00eas... mas o que devemos fazer em idiomas com poucos modelos de linguagem prontos para uso?<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Antes de entrar em mais detalhes, o senhor deve estar se perguntando por que um cientista franc\u00eas data como eu gostaria de ter um classificador de texto em coreano? O motivo \u00e9 que fa\u00e7o parte de um projeto que desenvolve um produto para classificar publica\u00e7\u00f5es de m\u00eddia social em diferentes categorias. Depois de validar a metodologia em ingl\u00eas e franc\u00eas, come\u00e7amos a ampli\u00e1-la para outros idiomas (ingl\u00eas, franc\u00eas, japon\u00eas, chin\u00eas e coreano).<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">S\u00f3 que havia um desafio maior no idioma coreano, porque n\u00e3o havia nenhum modelo de idioma pr\u00e9-treinado para ser encontrado em c\u00f3digo aberto, ent\u00e3o tive que fazer isso sozinho com pouqu\u00edssimos recursos lingu\u00edsticos coreanos.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Este artigo se concentrar\u00e1 na classifica\u00e7\u00e3o de textos coreanos usando o m\u00e9todo multi-fit explicado a seguir <a class=\"ck ju\" href=\"https:\/\/arxiv.org\/abs\/1909.04761\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">papel<\/a>.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Muitos idiomas est\u00e3o bem representados na Web, como ingl\u00eas, chin\u00eas, espanhol, portugu\u00eas, franc\u00eas: Ingl\u00eas, chin\u00eas, espanhol, portugu\u00eas, franc\u00eas... O idioma coreano ainda \u00e9 muito pouco documentado e n\u00e3o h\u00e1 muito conte\u00fado pronto para ser reutilizado. Por isso, pensei em contribuir compartilhando meus principais aprendizados com os senhores, enquanto descobria a PNL coreana.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Neste artigo, contarei aos senhores sobre minha jornada para treinar um modelo de idioma coreano sem entender uma \u00fanica palavra de coreano e como o usei para classifica\u00e7\u00e3o de texto.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\"><strong class=\"ik jv\">Isen\u00e7\u00e3o de responsabilidade:\u00a0<\/strong>Normalmente, consideramos que um modelo de linguagem \u00e9 bom quando atinge uma precis\u00e3o de cerca de 45-50%. Como meu objetivo n\u00e3o \u00e9 gerar texto em coreano, n\u00e3o preciso atingir esse desempenho: S\u00f3 preciso de um modelo que \u201centenda\u201d a gram\u00e1tica e a estrutura do idioma coreano para que eu possa us\u00e1-lo para treinar um classificador de texto coreano.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-4\" style=\"--awb-text-color:#000000;\"><p id=\"9349\" class=\"hk hl dn ce hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ek\"><span style=\"color: #ff0066;\"><strong>1 - Cole\u00e7\u00e3o Data para treinamento do modelo de linguagem<\/strong><\/span><\/p>\n<p class=\"hk hl dn ce hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ek\"><span style=\"color: #ff0066;\"><strong>1.1 - Fonte Data<\/strong><\/span><\/p>\n<p id=\"fb69\" class=\"ii ij dn ik b il im hp in io ip ht iq ir is it iu iv iw ix iy iz ja jb jc jd df ek\">Normalmente, ao treinar um modelo de idioma do zero, as sugest\u00f5es do tutorial do ULM FiT s\u00e3o baixar todo o conte\u00fado da Wikip\u00e9dia no idioma em quest\u00e3o. Essas diretrizes s\u00f3 funcionam se os falantes nativos desse idioma estiverem acostumados a publicar muito nesse canal.<\/p>\n<p class=\"ii ij dn ik b il im hp in io ip ht iq ir is it iu iv iw ix iy iz ja jb jc jd df ek\">Em coreano, parece que as pessoas n\u00e3o est\u00e3o acostumadas a isso: n\u00e3o s\u00f3 o contexto coreano da Wikip\u00e9dia n\u00e3o tem volume suficiente, como tamb\u00e9m n\u00e3o \u00e9 representativo da fala coreana nativa.<\/p>\n<p class=\"ii ij dn ik b il im hp in io ip ht iq ir is it iu iv iw ix iy iz ja jb jc jd df ek\">Aqui est\u00e1 uma compara\u00e7\u00e3o entre o n\u00famero de artigos na Wikip\u00e9dia em ingl\u00eas e na coreana para dar algumas dicas:<\/p>\n<div class=\"cx cy jw\">\n<div class=\"hd s gv he\">\n<div class=\"jx hg s\" style=\"text-align: center;\">\n<div class=\"gy gz t u v ha aj bm hb hc\"><\/div>\n<p><img decoding=\"async\" class=\"lazyload tq tr t u v ha aj c aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1-Lj8fQGUHUKcgH-CYxd8Uw.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1-Lj8fQGUHUKcgH-CYxd8Uw.png\" data-sizes=\"auto\" data-orig-sizes=\"611px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27611%27%20height%3D%2795%27%20viewBox%3D%270%200%20611%2095%27%3E%3Crect%20width%3D%27611%27%20height%3D%2795%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1-Lj8fQGUHUKcgH-CYxd8Uw.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1-Lj8fQGUHUKcgH-CYxd8Uw.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/1-Lj8fQGUHUKcgH-CYxd8Uw.png 611w\" alt=\"Image for post\" width=\"611\" height=\"95\" \/><\/p>\n<figure class=\"gn go gp gq gr gs cx cy paragraph-image\"><figcaption class=\"jy jz cz cx cy ka kb ce b eu cg fx\" data-selectable-paragraph=\"\"><em>Volume da Wikip\u00e9dia em diferentes idiomas<\/em><\/figcaption><\/figure>\n<\/div>\n<\/div>\n<div><\/div>\n<\/div>\n<p>Meu conselho: Combinei artigos da Wikip\u00e9dia com o Common Crawl data, que o senhor pode baixar em <a class=\"ck ju\" href=\"https:\/\/traces1.inria.fr\/oscar\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">aqui<\/a>.<\/p>\n<p><strong style=\"color: #ff0066;\">1.2 - Volume do Data<\/strong><\/p>\n<p>Lembremos que um modelo de linguagem \u00e9 um modelo que deve prever a pr\u00f3xima palavra em um texto. Para fazer isso, nosso modelo deve ter visto muitos exemplos para aprender o idioma e ser bom em falar. Dito isso, n\u00e3o \u00e9 \u00fatil ir al\u00e9m de 100 milh\u00f5es de tokens. Isso s\u00f3 aumenta a complexidade do seu modelo, al\u00e9m de aumentar o tempo de treinamento.<\/p>\n<p>Assim, \u00e0 primeira vista, depois de recuperar toda a Wikip\u00e9dia e o Common Crawl data, eu me deparei com muito mais de 100 milh\u00f5es de tokens, de modo que tive de escolher os documentos mais relevantes para treinar meu modelo. O objetivo da minha metodologia \u00e9 manter os documentos que representam da melhor forma o idioma coreano nativo:<\/p>\n<ol class=\"\">\n<li id=\"2e13\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd kc jk jl ek\" data-selectable-paragraph=\"\">Primeiro, realizei uma tokeniza\u00e7\u00e3o fraca em meu corpus para aproximar o n\u00famero de tokens que eu tinha ao dividir o corpus em espa\u00e7os.<\/li>\n<li id=\"f246\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd kc jk jl ek\" data-selectable-paragraph=\"\">Removi todos os n\u00fameros, emojis, pontua\u00e7\u00e3o e outros s\u00edmbolos que n\u00e3o s\u00e3o espec\u00edficos do coreano de meus tokens obtidos.<\/li>\n<li id=\"7991\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd kc jk jl ek\" data-selectable-paragraph=\"\">Calculei um contador de todos os tokens em meu corpus e recuperei os 70.000 tokens mais mencionados.<\/li>\n<li id=\"bc31\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd kc jk jl ek\" data-selectable-paragraph=\"\">Em seguida, recuperei documentos que mencionavam a maioria dos tokens mais usados, de modo que meu corpus seria constru\u00eddo com 100 milh\u00f5es de tokens e a\u00ed estava meu corpus de treinamento!<\/li>\n<\/ol>\n<p id=\"c754\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Agora que temos nosso corpo bruto de treinamento, podemos come\u00e7ar a fazer neg\u00f3cios de verdade!<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\"><span style=\"color: #ff0066;\"><strong>2 - tokeniza\u00e7\u00e3o Data<\/strong><\/span><\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Acho que quando eu lhe disse antes que tokenizei com uma fun\u00e7\u00e3o de divis\u00e3o, o senhor come\u00e7ou a pensar que este artigo era realmente uma piada, mas vamos tranquiliz\u00e1-lo, esse nunca foi o meu objetivo final!<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Primeiro, vamos lembr\u00e1-lo de que nenhum outro pr\u00e9-processamento do data \u00e9 necess\u00e1rio para treinar um modelo de linguagem. Muitas tarefas de NLP executam a remo\u00e7\u00e3o de n\u00fameros, stopwords, letras min\u00fasculas, stemming... Tudo isso tiraria o texto de seu contexto e nosso objetivo \u00e9 aprender a falar coreano, portanto, devemos manter todo o texto como foi originalmente escrito.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Para tokenizar o texto coreano, experimentei dois modelos de tokeniza\u00e7\u00e3o:<\/p>\n<ul class=\"\">\n<li id=\"d36a\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\"><a class=\"ck ju\" href=\"https:\/\/github.com\/explosion\/spaCy\/tree\/master\/spacy\/lang\/ko\" rel=\"noopener nofollow\" target=\"_blank\">Modelo coreano de espa\u00e7o<\/a> que \u00e9 um wrapper para o tokenizador mecab coreano.<\/li>\n<li id=\"3ebc\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\"><a class=\"ck ju\" href=\"https:\/\/github.com\/google\/sentencepiece\" rel=\"noopener nofollow\" target=\"_blank\">pe\u00e7a de senten\u00e7a<\/a>\u00a0modelo de tokenizador de subpalavras treinado em meu corpus com 28.000 tokens m\u00e1ximos<\/li>\n<\/ul>\n<p id=\"510f\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Como \u00e9 recomendado no\u00a0<a class=\"ck ju\" href=\"https:\/\/nlp.fast.ai\/classification\/2019\/09\/10\/multifit.html\" rel=\"noopener nofollow\" target=\"_blank\">artigo multifit<\/a>, Por isso, optei pela segunda op\u00e7\u00e3o para ter uma granularidade de subpalavra.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\"><strong><span style=\"color: #ff0066;\">3 - Modelo de treinamento<\/span><\/strong><\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Ao treinar um modelo de linguagem, bem como treinar qualquer modelo, os dois aspectos que o senhor deseja evitar s\u00e3o\u00a0<strong class=\"ik jv\">subadapta\u00e7\u00e3o<\/strong>\u00a0e\u00a0<strong class=\"ik jv\">sobreajuste.<\/strong><\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Um modelo\u00a0<strong class=\"ik jv\">sob ajustes<\/strong> quando ele \u00e9 simples demais em rela\u00e7\u00e3o ao data que est\u00e1 tentando modelar. Isso pode ser detectado quando o senhor constata que o modelo n\u00e3o consegue aprender com o data de treinamento e que a perda de treinamento n\u00e3o converge para 0.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Por outro lado, um modelo\u00a0<strong class=\"ik jv\">sobre ajustes<\/strong>\u00a0quando ele aprende \u201cmuito bem\u201d a modelar seu data de treinamento, mas o desempenho permanece baixo no data de teste. Isso \u00e9 um sinal de que seu modelo provavelmente n\u00e3o conseguir\u00e1 prever bem o data que ele ainda n\u00e3o viu.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Quando comecei a treinar meu modelo de linguagem, no in\u00edcio eu estava realmente lutando para aprender alguma coisa com meu data. Como o senhor pode ver na imagem abaixo, ap\u00f3s 10 \u00e9pocas de treinamento, minha perda de treinamento n\u00e3o diminu\u00eda nem um cent\u00edmetro.<\/p>\n<div class=\"gt gu gv gw aj gx\" tabindex=\"0\" role=\"button\">\n<div class=\"cx cy kd\">\n<div class=\"hd s gv he\">\n<div class=\"ke hg s\">\n<p><img decoding=\"async\" class=\"lazyload tq tr t u v ha aj c aligncenter\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IU-CQKAbqWW_heiB.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IU-CQKAbqWW_heiB.png\" data-sizes=\"auto\" data-orig-sizes=\"700px\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27716%27%20height%3D%27432%27%20viewBox%3D%270%200%20716%20432%27%3E%3Crect%20width%3D%27716%27%20height%3D%27432%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IU-CQKAbqWW_heiB.png 276w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IU-CQKAbqWW_heiB.png 552w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IU-CQKAbqWW_heiB.png 640w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2024\/09\/0IU-CQKAbqWW_heiB.png 700w\" alt=\"Image for post\" width=\"716\" height=\"432\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p id=\"7409\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Isso significa que meu modelo era simples demais para representar a complexidade do idioma coreano.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Aqui est\u00e1 o que fiz para superar esse problema:<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Como o senhor pode imaginar, a depura\u00e7\u00e3o de qualquer modelo de aprendizagem profunda n\u00e3o \u00e9 f\u00e1cil, pois h\u00e1 muitos graus de liberdade. O senhor precisa encontrar a estrutura de rede correta, bem como o conjunto certo de hiperpar\u00e2metros.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Para simplificar o problema no in\u00edcio, o caminho certo a seguir \u00e9 tentar fazer o overfit em um \u00fanico lote de data. A ideia aqui \u00e9 garantir que, dado algum data, seu modelo seja capaz de interpretar sua complexidade e ter um bom desempenho no conjunto de treinamento.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Aqui est\u00e3o todas as coisas que tentei:<\/p>\n<ul class=\"\">\n<li id=\"46bd\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Aumentar o tamanho da incorpora\u00e7\u00e3o<\/li>\n<li id=\"4727\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Aumentar o n\u00famero de camadas ocultas<\/li>\n<li id=\"a0be\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Altera\u00e7\u00e3o das fun\u00e7\u00f5es do otimizador<\/li>\n<li id=\"085d\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Altera\u00e7\u00e3o da taxa de aprendizado<\/li>\n<\/ul>\n<p id=\"9594\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Depois de muitas tentativas, aqui est\u00e3o a estrutura e os hiperpar\u00e2metros que permitiram que meu modelo come\u00e7asse a aprender:<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Arquitetura de rede neural:<\/p>\n<ul class=\"\">\n<li id=\"3703\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Estrutura do QRNN<\/li>\n<li id=\"a89d\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">N\u00famero de camadas ocultas: 2500<\/li>\n<li id=\"69bf\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">N\u00famero de camadas: 4<\/li>\n<li id=\"3ea6\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Tamanho da incorpora\u00e7\u00e3o: 768<\/li>\n<\/ul>\n<p id=\"9f79\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Quando o modelo for capaz de prever corretamente no conjunto de treinamento, o pr\u00f3ximo passo a ser evitado \u00e9 o ajuste excessivo.<\/p>\n<p class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Aqui est\u00e3o algumas regulariza\u00e7\u00f5es que tentei para garantir que meu modelo n\u00e3o se ajustasse demais.<\/p>\n<ul class=\"\">\n<li id=\"191d\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Adicionar desist\u00eancia<\/li>\n<li id=\"7c3e\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Adicionar redu\u00e7\u00e3o de peso<\/li>\n<li id=\"0000\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Adicionar recorte de gradiente<\/li>\n<\/ul>\n<p id=\"e1c1\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd df ek\">Aqui est\u00e3o os regularizadores que usei para treinar meu modelo:<\/p>\n<ul class=\"\">\n<li id=\"fe77\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Taxa de aprendizado: 0.0002<\/li>\n<li id=\"a072\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Decaimento do peso: 1e-8<\/li>\n<li id=\"bc79\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Recorte de gradiente: 0.25<\/li>\n<\/ul>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-color:#ffffff;--awb-bg-color-hover:#ffffff;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-5\" style=\"--awb-text-color:#000000;\"><p><span style=\"color: #ff0066;\"><strong>Resultados<\/strong><\/span><\/p>\n<p>Depois de treinar meu modelo por 15 \u00e9pocas, finalmente alcancei uma precis\u00e3o de 25% e uma perplexidade de 100. Como disse no in\u00edcio, nunca tive a inten\u00e7\u00e3o de usar meu modelo de linguagem para gera\u00e7\u00e3o de texto, portanto, j\u00e1 fiquei satisfeito em saber que meu modelo \u00e9 capaz de prever corretamente uma palavra em cada 4.<\/p>\n<p>Em seguida, reutilizei meu modelo pr\u00e9-treinado para classifica\u00e7\u00e3o de texto. O dataset que usei \u00e9 um dataset equilibrado composto por 10 mil documentos sociais provenientes do Instagram, Facebook, YouTube e sites que foram rotulados como \u201clabel1\u201d ou n\u00e3o \u201cnot label1\u201d. Meu objetivo era prever se uma nova publica\u00e7\u00e3o \u00e9 sobre \u201clabel1\u201d ou n\u00e3o.<\/p>\n<p>Aqui est\u00e3o os desempenhos que obtive para todos os idiomas que desenvolvemos:<\/p>\n<p>Imagem para postagem<\/p>\n<p>Desempenho de classificadores de texto de diferentes idiomas<\/p>\n<p>Portanto, mesmo sem falar o idioma e treinar eu mesmo o modelo de idioma pr\u00e9-treinado, o desempenho do classificador de texto coreano alcan\u00e7a muito bem o desempenho dos outros idiomas.<\/p>\n<p>Ainda tenho muitas coisas que preciso tentar para melhorar o desempenho que obtenho, mas, ainda assim, foi uma esp\u00e9cie de granizo aprender a processar documentos de um idioma complexo como o coreano sem entender uma palavra sequer e sem encontrar informa\u00e7\u00f5es e orienta\u00e7\u00f5es relevantes na Web.<\/p>\n<p><span style=\"color: #ff0066;\"><strong>Pr\u00f3ximas etapas<\/strong><\/span><\/p>\n<p>Acabei de descrever como poderia aprimorar um modelo de classifica\u00e7\u00e3o de texto coreano utilizando um modelo de linguagem simples criado do zero. O desempenho inicial j\u00e1 \u00e9 bom, mas ainda h\u00e1 espa\u00e7o para melhorias. Acho que o que eu gostaria de trabalhar em curto prazo seria:<\/p>\n<ul class=\"\">\n<li id=\"11e5\" class=\"ii ij dn ik b il je hp in io jf ht iq ir jg it iu iv jh ix iy iz ji jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Revisar a tokeniza\u00e7\u00e3o: como n\u00e3o falo uma palavra de coreano, seria interessante que um falante nativo de coreano desse uma olhada na tokeniza\u00e7\u00e3o e confirmasse se ela faz sentido.<\/li>\n<li id=\"182a\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Aprimore meu modelo de linguagem e compare os desempenhos de classifica\u00e7\u00e3o:<\/li>\n<li id=\"30ab\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Aprendizagem por transfer\u00eancia de um modelo de linguagem retroativa, pois parecia ter sido mais eficiente em ingl\u00eas ou franc\u00eas.<\/li>\n<li id=\"0ae5\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Aprendizagem por transfer\u00eancia de um modelo de linguagem bidirecional.<\/li>\n<li id=\"281a\" class=\"ii ij dn ik b il jm hp in io jn ht iq ir jo it iu iv jp ix iy iz jq jb jc jd jj jk jl ek\" data-selectable-paragraph=\"\">Ter taxas de aprendizado din\u00e2micas durante o treinamento para evitar ficar preso em um m\u00ednimo local.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\" target=\"_blank\" rel=\"noopener noreferrer\">Este artigo foi publicado pela primeira vez no The Artefact Tech Blog - uma biblioteca de artigos de engenharia e ci\u00eancia data.<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-5 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--link_hover_color: #ff0066;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element\" style=\"text-align:center;--awb-margin-top:0px;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"1057\" height=\"591\" title=\"data-driven\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271057%27%20height%3D%27591%27%20viewBox%3D%270%200%201057%20591%27%3E%3Crect%20width%3D%271057%27%20height%3D%27591%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/wp-content\/uploads\/2020\/06\/Global-Newsletter-Data-Digest_LinkedIn_600x315_april.jpg\" alt class=\"lazyload img-responsive wp-image-30246\"\/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-6 fusion_builder_column_1_2 1_2 fusion-flex-column fusion-flex-align-self-center fusion-column-inner-bg-wrapper\" style=\"--awb-inner-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><span class=\"fusion-column-inner-bg hover-type-none\"><a class=\"fusion-column-anchor\" href=\"https:\/\/go.pardot.com\/l\/597421\/2020-05-06\/2k5zzj\" target=\"_blank\" rel=\"noopener\"><span class=\"fusion-column-inner-bg-image\"><\/span><\/a><\/span><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><div class=\"fusion-text fusion-text-6\"><p><b>O senhor tem interesse em digital e data marketing?<\/b><\/p>\n<p>Assine o Data Digest, o boletim informativo do Artefact, para receber conselhos pr\u00e1ticos, insights e opini\u00f5es em sua caixa de entrada todos os meses.<\/p>\n<p><b>O senhor pode me inscrever!<\/b><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>25 de novembro de 2020<br \/>\nNeste artigo, Amale El Hamri, Cientista S\u00eanior do Data na Artefact Fran\u00e7a, explica como treinar um modelo de linguagem sem que o pr\u00f3prio usu\u00e1rio tenha conhecimento da linguagem. O artigo inclui dicas sobre onde obter o data de treinamento, quanto data o senhor precisa, como pr\u00e9-processar o data e como encontrar uma arquitetura e um conjunto de hiperpar\u00e2metros que melhor se adaptem ao seu modelo.<\/p>","protected":false},"featured_media":21375,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[2995,21930],"blog-language":[2991],"class_list":["post-21374","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-ai-technology","blog-category-finance","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog\/21374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/media\/21375"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/media?parent=21374"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog-category?post=21374"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/br\/wp-json\/wp\/v2\/blog-language?post=21374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}