Breno

The duplicates, layer normalization and machine learning systems

So, trying to think in a great name, but it can be in this way. Considering the three perspectives. Foundations. Research. Engineering. For my son also to learn. Also because it is for teaching him, to be better to prepare my boy for great learning to become a great engineer for this AI world, and not for the world.

Foundations.

Aprendi sobre o problema Contain Duplicates, tem no LeetCode. Seria um problema que, dada uma lista de números, precisa-se saber se tem números duplicados na lista. So, a resposta seria sim ou não. Ou, verdadeiro ou falso.

Bom, tem que primeiro compreender o problema, o que nesse caso, simples. Tem que pensar em termos de tempo e espaço. A solução tem que ser pensada assim. Ou seja, tem que resolver e tem que saber quanto custa em termos de complexidade de tempo e complexidade de espaço, ou memória.

Comecemos com o jeito mais simples. Seria simplesmente iterar sobre a lista de um em um elemento. Ou seja, pega o primeiro item e compara ele com todos os outros e assim para todos. Tempo seria O(n2). Espaço seria O(1) porque não precisou de nenhuma estrutura além da própria lista.

Para melhorar a complexidade do tempo, uma estratégia seria ordenar a lista e aí não precisaria a comparação com todos, que seria uma iteração aninhada, que é o que leva a ter tempo de O(n2). A ordenação se consegue com tempo O(nlogn). Espaço ficaria na mesma linha de O(1) porque usa a mesma estrutura. Para iterar sobre a lista ordenada, seria O(n).

Bom, se pudesse considerar um jeito melhor de se obter uma complexidade de tempo menor, like, really O(n), porque no caso da ordenação, preponderou o O(nlogn), seria o uso de uma estrutura, o que tornaria o espaço não mais O(1), mas melhoraria o tempo. Poderia-se considerar um hash set, que tem uma busca simples de O(1). Precisaria checar se o elemento está no hash set, se não estiver, adiciona ele lá. Itera sobre a lista. Assim que achar, seria porque foi duplicado, retornaria verdadeiro. Caso chegasse ao fim da lista, seria porque não se tem duplicação. O tempo seria O(n) para iterar e o espaço seria O(n) pela criação do hash set que assumiria o tamanho n, da lista dos números.

Research.

O Karpathy discutiu o uso da técnica layer normalization na arquitetura Transformer. Seria na linha do batch normalization, mas normaliza as linhas e não as colunas. Importante a compreensão da implementação do BatchNorm que ele explicou.

Engineering.

So, considerei a leitura do livro da Chip, Designing Machine Learning Systems. Primeiro aprendizado que considerei foi a questão de machine learning estar muito associado com ML algorithms, que seria apenas uma parte de machine learning systems. O designing inclui the business logic and interest, the stakeholders, the data, the evaluation, the deployment.

O fim em si seria sobre como disponibilizar um modelo de machine learning em produção para a resolução de alguma tarefa de interesse.

Really great learning.