The anagram, scaling models and characteristics for ML usage
So, consideremos então foundations, research and engineering. Para foundations, o problema de valid anagram. Para research, scaling. Para engineering, the other characteristics important for ML usage.
Let's write this without so much formalism and structure. Like a dialog, man. Truly simple.
So, em termos de foundations, aprendi sobre o problema valid anagram. Percebi que a importância seria sobre compreender o problema antes de tudo. Like, o que seria um anagrama? Se você entende isso, o foco pode ser agora na resolução e a própria compreensão te ajuda a entender como resolver o problema. So, como seria o problema? Dadas duas strings, responder se são anagramas ou não. Like, with coding. Como resolvemos isso como seres humanos? Olhamos as contagens de cada caractere que aparece. Se for igual, it is a valid anagram.
Para código, alguns modos. O uso de hash map, basically, a dictionary in Python para contar. Os caracteres seriam as chaves, e a quantidade de vezes que aparece na string seria o valor. So, a solução seria a construção dos dicionários e depois comparar se the countings are the same for each key.
Outro modo, mais simples em termos de complexidade de memória, seria apenas sort the strings and check if they are equal.
Para o caso com hash map, seria complexidade de tempo O(s + t), com s e t como os tamanhos das listas. A complexidade de espaço seria also O(s + t) porque precisaria criar essas duas estruturas.
Para o caso com sorting, seria apenas a complexidade de tempo, que seria de acordo com o método de sorting porque depois seria mesmo só comparar as strings. Sem complexidade de espaço nesse caso, porque não se cria nenhuma estrutura.
Sobre research, man. Pensei em avançar com watching mesmo, para depois buscar explorar o código, pensando em exercícios e pesquisa mesmo, investigação com curiosidade, foco em watching, man. Like, Jordan Peterson fala sobre isso. Prestar atenção. Depois buscar demonstrar que compreendeu. Great. So, assisti sobre scaling que basicamente seria sobre aumentar os números dos hiperparâmetros para o modelo ser maior, like, embedding maior, mais camadas, block_size maior, enfim. Dado o increasing no tamanho da rede, o uso de Dropout foi considerado, método de paper de 2014. Really important to understand porque se usa mesmo ainda pelo que observei. Para se pensar na questão dos artigos, man. Like, the Transformer paper usa outros métodos, mas enfim, great.
Sobre engineering, algumas páginas lidas do Designing Machine Learning Systems. Algumas características para considerar no uso de ML para solving problems. Deixa eu tentar lembrar o que li. Like, basically, the most important message foi que precisa de dados para aprender. Os modelos não são ainda tão bons em termos de few-shot learning. Tem estratégias para não precisar de dados, mas, in general, the ML model would need data. That is the important perspective.
Really great learning.