Esta lição foi traduzida automaticamente para português e ainda não foi revisada por uma pessoa. Se algo parecer estranho, a versão em inglês é a definitiva.
Todo sistema de IA precisa armazenar e recuperar dados – rapidamente. Quer seja uma lista de valores de pixel em uma imagem, um vocabulário de 50.000 palavras ou milhões de preferências do usuário, a escolha da estrutura de dados determina a rapidez com que sua IA pode pensar.
Duas estruturas dominam: matrizes e mapas hash. Domine-os e você terá a base para quase todos os pipelines de IA.
Um array é simplesmente uma lista numerada de itens armazenados lado a lado na memória. Cada item possui um índice - sua posição na lista, começando do zero.
index: 0 1 2 3 4
value: ["cat", "dog", "bird", "fish", "frog"]
Como os itens ficam próximos uns dos outros, você pode pular direto para qualquer posição. Quer o item 3? Pronto - não é necessária pesquisa. Esse é o acesso O(1), o que significa que leva o mesmo tempo se a matriz contém 10 itens ou 10 milhões.
Inserir ou remover itens no meio é caro. Cada item após a alteração deve ser embaralhado. Isso é O(n) - quanto mais itens, mais tempo leva.
Se você tivesse uma lista de reprodução de 10.000 músicas e quisesse inserir uma nova faixa na posição 5, todas as músicas da posição 5 em diante precisariam ser alteradas. Como um serviço de streaming pode lidar com isso sem desacelerar?
Um mapa hash (também chamado de dicionário ou tabela hash) armazena dados como pares de valores-chave. Em vez de acessar itens por número de índice, você os acessa por meio de uma chave significativa.
Inicie sessão para participar na discussão
word_counts = {
"hello": 42,
"world": 37,
"AI": 156
}
Precisa da contagem para "AI"? O mapa hash usa uma função hash para converter a chave em um índice nos bastidores. O resultado? O(1) tempo médio de pesquisa - assim como arrays, mas usando nomes em vez de números.
Os dicionários do Python são mapas hash. Quando o ChatGPT conta a frequência das palavras durante o treinamento, ele usa estruturas semelhantes a mapas hash para rastrear bilhões de ocorrências de palavras em todo o texto da Internet.
| Operação | Matriz | Mapa de hash | |----------|-------|----------| | Acesso por índice | O(1)⚡ | N/A | | Acesso por chave | O(n) 🐢 | O(1)⚡ | | Inserir no final | O(1)⚡ | O(1)⚡ | | Inserir no meio | O(n) 🐢 | N/A | | Procure por valor | O(n) 🐢 | O(1)⚡ |
Pense em O(1) como "instantâneo, não importa o tamanho" e O(n) como "mais lento quanto maiores os dados".
Você tem 100.000 perfis de usuário e precisa encontrar um usuário pelo nome de usuário. Qual estrutura é mais rápida?
Um dos padrões mais úteis tanto em entrevistas quanto em IA é a contagem de ocorrências. Aqui está a ideia em pseudocódigo:
counts = {}
for each word in text:
if word in counts:
counts[word] = counts[word] + 1
else:
counts[word] = 1
Essa única passagem pelo texto fornece a frequência de cada palavra. Os modelos de linguagem usam exatamente essa abordagem (em grande escala) para entender quais palavras são mais importantes.
Dada uma matriz de números e um alvo, encontre dois números que somam o alvo. A abordagem ingênua verifica cada par - O(n²). A abordagem inteligente usa um mapa hash:
seen = {}
for each number in array:
complement = target - number
if complement in seen:
return [seen[complement], current_index]
seen[number] = current_index
Uma passagem, O(n) tempo. O mapa hash lembra o que você já viu.
Por que a abordagem do mapa hash para soma dupla é mais rápida do que verificar cada par?
Um mecanismo de recomendação precisa verificar se o usuário já assistiu a um filme antes de sugeri-lo. Você armazenaria o histórico de exibição do usuário em uma matriz ou mapa hash? Que compensações vêm à mente?
Um modelo de IA armazena incorporações de palavras como matrizes de 300 números cada. Por que os arrays são uma boa escolha aqui?
Agora você conhece as duas ferramentas essenciais do tratamento de dados em IA. A seguir, em Strings e processamento de texto, vamos ver como a IA transforma texto bruto em algo que um modelo consegue realmente ler, o primeiro passo por trás de cada chatbot e caixa de busca que você usa.