Escrito por Ícaro Fróes
Tópicos abordados
- Fundamentos e Intuição
- Intuição por trás de aplicações práticas
- Demonstração de um espaço latente real
Fundamentos e Intuição
Hoje, a ideia de grandes modelos de linguagem entenderem os nossos idiomas, costumes e conceitos é muito normalizado por conta do grande “boom” que tivemos há alguns anos. Modelos de big techs como OpenAI, Google e Anthropic têm uma capacidade extraordinária, que pode ultrapassar a de muitos humanos em suas áreas específicas. Para começar a entender de onde esse entendimento de realidade, que soa quase ficcional, vem, é necessário que entendamos o que vetores semânticos (também conhecido como embeddings) e espaços latentes são, visto que são conceitos base que moldam tudo o que temos hoje nesse aspecto.
Computadores não tem qualquer entendimento subjetivo da realidade; eles funcionam com bits, zeros e uns. Dessa forma, para que seja possível simular um entendimento subjetivo da realidade, precisamos transformar conceitos reais em números, para que um computador consiga os processar. Agora, para que esse feito seja possível, precisamos primeiro questionar: o que é um conceito?
Definir o que é um conceito de forma absoluta e objetiva seria impossível, porém, vamos tentar uma abordagem interessante. Digamos que coisas e conceitos sejam definidos por suas características, em um contexto onde temos
possíveis características — alternativamente vistas como dimensões — as quais tem que simplesmente ter seu significado dado, ou seja, não podem ser definidas utilizando outros conceitos sem que se torne algo recursivo, como axiomas. Para cada característica, um conceito terá um valor no intervalo de 0 a 1, definindo o quanto ele possui da mesma (é importante mencionar que vetores reais podem ter valores negativos, mas vamos ignorar isso por simplicidade). Por exemplo:
, e sejam nossas características fictícias
- Tangibilidade (É físico/tocável?):
= Totalmente abstrato (ideia, sentimento).
= Totalmente concreto (objeto sólido).
- Funcionalidade (É uma ferramenta/tem utilidade prática?):
= Decorativo ou estado de espírito.
= Utilitário (serve para fazer algo específico).
- Tamanho Físico (Ocupa espaço?):
= Microscópico ou inexistente (abstrato).
= Enorme (prédio, montanha).
- Vida / Animacidade (É vivo ou tem agência?):
= Objeto inanimado.
= Ser vivo (humano, animal).
- Valência Positiva (Traz alegria/prazer?):
= Negativo ou Neutro.
= Extremamente positivo/recompensa.
Agora, somos capazes de definir conceitos a partir dessas características apenas, e quanto maior o
, número de características, mais precisão teremos em nossa definição. Aqui vão alguns exemplos de possíveis vetores semânticos com essas características:
Caso esteja utilizando um dispositivo móvel, é recomendado o uso do modo desktop para visualizar a tabela.
| Conceito | [Tangível, | Funcional, | Tamanho, | Vivo, | Positivo] | Análise |
| Smartphone | ![]() | ![]() | ![]() | ![]() | ![]() | O ápice do objeto utilitário. Pequeno, físico, não vivo, mas geralmente positivo. |
| Gripe (Vírus) | ![]() | ![]() | ![]() | ![]() | ![]() | Aqui está o contraste. É matéria (tangível), mas microscópico. Não é útil, é meio vivo, e é muito negativo. |
| Amor | ![]() | ![]() | ![]() | ![]() | ![]() | O oposto do Smartphone. Nada físico. Mas tem alta conexão com “Vida” (precisa de seres vivos) e máxima positividade. |
| Vulcão | ![]() | ![]() | ![]() | ![]() | ![]() | Físico e Gigante (Tamanho 1.0). Diferente do Smartphone, não tem utilidade prática direta e tende a ser negativo (perigo). |
| Matemática | ![]() | ![]() | ![]() | ![]() | ![]() | É totalmente abstrato (como o Amor), mas é puramente útil (como o Smartphone). É “fria” (neutra). |
Agora, nós temos nossos próprios vetores semânticos! Cada um deles definido em 5 dimensões — as características — e eles conseguem passar uma ótima ideia de cada coisa, de forma que até mesmo um computador possa calcular em cima. Agora, entender o conceito de espaço latente fica simples, visto que ele não é nada mais que o espaço de 5 dimensões o qual esses conceitos estão localizados.
Intuição por trás de aplicações práticas
A coisa mais simples a se fazer para tornar a intuição que temos de espaços latentes um pouco mais forte é demonstrar o poder semântico que esses espaços tem por natureza. Por exemplo, aqui está um novo espaço latente fictício para propósitos de demonstração, mas com apenas duas dimensões:
Nele, é possível perceber que a distância entre homem e mulher é a mesma distância de rei e rainha, algo que é intuitivo, visto que a diferença entre os dois é essencialmente a mesma: gênero. No entanto, é importante perceber a importância dessas características que acabam por emergir naturalmente em espaços latentes reais. Elas nos permitem fazer coisas como:
rei – homem + mulher = rainha
Essa conta é completamente intuitiva, e pode ser interpretada como “tire o gênero ‘homem’ do rei e adicione o gênero ‘mulher’, tornando-o em uma rainha”. E ela pode ser matematicamente vista da seguinte forma, baseado nos dados acima:
![[3, 8] - [4.2, 6] + [3.2, 4] = [2, 6]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_09e3725d69618dec1e11aa01bcb21e28.gif?ssl=1)
Isso demonstra o quão poderosas são relações entre pontos em espaços latentes bem desenvolvidos, sempre lembrando que a tendência é que quanto mais dimensões houverem, mais precisas serão as definições semânticas.
Agora, vimos a importância da visualização dos dados e como ela pode nos passar intuições importantes. Contudo, é importante refletir sobre como conseguiríamos ter uma visualização eficiente de dados com alta dimensionalidade, como a tabela que construímos inicialmente, que tem 5 dimensões. Para isso, utilizamos algoritmos de redução de dimensionalidade, como o t-SNE, t-Distributed Stochastic Neighbor Embedding:
Perceba o como as principais características se mantém visualmente, mesmo que tenhamos “perdido” algumas dimensões: matemática se aproxima do smartphone, visto que os dois tem um alto valor de utilidade; vulcão e gripe, conceitos negativos, se distanciam consideravelmente de amor, que é um conceito positivo. Fica clara então a principal intenção de diminuir a dimensionalidade de um espaço latente, que é a visualização humana (além de outros propósitos que serão tratados no futuro).
Agora, podemos também começar a calcular a similaridade entre conceitos. A nossa intenção é encontrar uma forma de calcular um valor normalizado que representa o quão similar dois conceitos são a partir de seus vetores iniciais; depois disso, podemos olhar para nossa visualização de dimensionalidade reduzida para confirmar se nossos valores realmente fazem sentido. Uma das formas mais simples de se fazer isso é com o seguinte:

Primeiramente, realizamos o produto escalar, multiplicando os vetores
e
. Então, dividimos esse valor pelo produto da magnitude de ambos, que representa seu tamanho, ou, em outras palavras, a distância da origem do espaço latente, para conseguirmos normalizar o valor.
Similaridade entre smartphone e matemática:
![s = [1.0, 1.0, 0.1, 0.0, 0.7]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_d26f710ef184506b3d69cb7a89f64734.gif?ssl=1)
![m = [0.0, 1.0, 0.0, 0.0, 0.5]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_82682c6f050efca78ed3fe2781e06a19.gif?ssl=1)
- Produto escalar
- Calculando as magnitudes
- Resultado final
Ou seja, concluímos que smartphone e matemática tem uma similaridade de ~76% em nosso espaço latente. Porém, para vulcão e matemática, por exemplo, a similaridade cai para ~6%. Isso acontece por conta do que já tínhamos deduzido anteriormente: o primeiro par, com alta similaridade, tem um alto valor de utilidade, que domina a relação deles. No entanto, o segundo par não tem qualquer característica relevante similar entre si. Tudo isso também se confirma ao olharmos para o nosso gráfico de dimensionalidade reduzida, que representa tais similaridades com distâncias entre pontos.
Demonstração de um espaço latente real
Para finalizar e tornar as ideias um pouco mais tangíveis, veremos ~600 palavras em um espaço latente real — não fictício como os que vimos acima. Este é um gráfico interativo da redução um espaço latente de 384 dimensões para 2 utilizando o t-SNE; além disso, o algoritmo K-Means foi utilizado para classificar as palavras com base em seus vetores semânticos, demonstrando mais uma utilidade para os mesmos (classificação semântica).
Perceba o como as classes surgiram naturalmente, somente a partir de um algoritmo que analisa a proximidade de pontos. Há muitas coisas interessantes de se analisar nesse gráfico, como as fronteiras entre classes: a palavra “Farmer”, que significa fazendeiro, acabou sendo classificada como um animal, apesar de não ser; isso aconteceu pois ela fica exatamente na fronteira entre profissões e animais, fazendo com que o algoritmo que os classificou se confundisse. Apesar do erro, ainda é extremamente interessante perceber o como até mesmo isso faz sentido, pois a palavra fazendeiro tem, de fato, uma relação direta com animais. Além disso, a transição entre comidas e animais é muito delicada, pois muitos animais são considerados comidas frequentemente; essa divisão fica clara ao analisar a fronteira e perceber que majoritariamente animais comestíveis ficam por lá.
Com isso, espera-se que você tenha construído uma boa e intuitiva noção do que vetores semânticos e espaços latentes realmente são e para que servem. Em próximas leituras, entenderemos aplicações mais práticas dos mesmos, além de como são treinados e suas nuanças.





![0.7]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_68701521b1140324f81d57c80a423f0d.gif?ssl=1)


![0.1]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_77ecde069dab78a045310cf38da8637e.gif?ssl=1)



![1.0]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_48b9b07f5be3f339706054a338f3f81b.gif?ssl=1)
![0.2]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_b9fe0df2041e6cca62cb1527cbbcec49.gif?ssl=1)
![0.5]](https://i0.wp.com/noic.com.br/wp-content/plugins/latex/cache/tex_6857611c41c50bb56d3d927567d5c87a.gif?ssl=1)









