image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Carlos Lima
Carlos Lima14/04/2024 19:32
Compartilhe

Como eu uso a técnica Feyman para aprender conceitos complexos da programação

    O que trataremos neste artigo:

    • O que é a técnica Feynman
    • Como aplicar (meu método)
    • Exemplo de aplicação (Real)

    O que é a técnica Feynman?

    A técnica foi criada pelo lendário físico Richard Feynman. Ouvi sobre ela há oito anos com autodidatas que eram apaixonados por aprender, o quê? Qualquer coisa! Hoje me vejo nessa posição e amo. Orgulhosamente, ostento o título de "life-long-learner" e acredito que na programação é algo necessário.

    Em que consiste a técnica? Vou lhes apresentar um diagrama de modo que fique claro para mim:

    image

    Acabou? É isso? Sim, é isso. É realmente dessa simplicidade toda. E sabe por que funciona? A filosofia é que, se não formos capazes de simplificar alguns conceitos que estamos aprendendo e esconder nosso conhecimento atrás de termos técnicos, não entendemos o conceito. Essa dói, né? Eu sei, me senti assim na primeira vez.

    Como eu aplico

    Eu tenho uma abordagem que aprendi com colegas para estruturar essa ideia. Funciona da seguinte forma: em uma folha de papel ou na web (eu uso o Notion), você escreve dois campos:

    Coisas que eu não entendi:

    • Máquinas
    • Mundo

    Explicação do conceitos escolhidos:

    Tema: as máquinas vão dominar o mundo?

    As máquias não vão dominar o mundo.

    As máquias não vão dominar o mundo.

    As máquias não vão dominar o mundo.

    As máquias vão dominar o mundo.

    Primeiro, tento explicar o conceito para uma criança de dez anos. Se ao tentar explicar percebo que não está perfeito, escrevo o que não entendi em uma lista de "coisas que não entendi". Então, volto ao conceito e repito o processo de explicá-lo sem usar termos técnicos. Se ainda assim não entender algo, pesquiso até estar satisfeito com minha resposta (não precisa ser perfeita, mas sincera). Depois de eliminar todos os termos técnicos, volto para minha segunda tentativa de simplificar. Se estiver satisfeito, acabou; caso contrário, anoto os termos desconhecidos e os pesquiso mais. Vou apresentar um exemplo para esclarecer.

    Exemplo de aplicação

    O que eu não entendi:

    • Bias:

    quando o modelo não consegue entender o padrão dos dados e tem resultado baixos no treino/exercícios no teste/prova.

    • Variance:

    É quando o modelo é sensível a pequenas alterações nos dados também chamadas de ruídos

    ruídos: informações que não representam nosso modelo

    • Model complexity:

    Cada modelo é como um ajudante que tem equipamentos para nos ajudar a decidir se um paciente está doente/se vai chover ou não quanto mais equipamentos (parâmetros) maior a complexidade

    • Epochs:

    quando o conjunto de treino (exercícios) entram no modelo de uma vez isto recebe o nome de Epochs

    Batch: é uma fatia da Epoch é uma pequena quantidade de exercícios

    • Regulariation

    é uma técnica usada para evitar underfitting, ela desencoraja aprender ruídos dos dados

    • Dropout:

    é uma forma de punir redes neurais para não aprenderam informações desnecessário sobre os padrão dos dados

    • loss:

    loss é a diferença entre o que o modelo previu e o valor real

    Explicação

    Tema: Underfitting e Overfitting

    [1 Tentativa] Quando estamos treinando um modelo precisamos separar os dados em dados de treino e dados de teste, os dados de treino são os exercícios que fazemos antes da prova final e os de teste a prova, quando vamos bem nos exercícios mas não vamos bem na prova final isso é Overfitting (focamos tanto nos exercícios que não conseguimos aprender coisas novas) quando vamos mal em ambos chamamos de Underfitting.

    [2 Tentativa] Quando o nosso modelo está aprendendo com os dados ele pode ir bem no teste (exercícios) e também ir bem na prova final (treino) quando isso ocorre a situação é boa mas pode acontece que ele aprenda bem em um e no outro não, ou mesmo que vá mal nos dois. Quando ele aprende bem nos exercícios mas faz uma prova ruim chamamos de ‘overfitting’ e quando vá mais nos dois ‘underfitting’.

    Isso é causado quando o modelo tem dificuldade em entender os dados (chamamos de bias) ou quando os dados tem informações irrelevantes (chamamos de variance) demais.

    Para evitar overfitting podemos:

    • diminuir o número de ferramentas que o modelo está usado (parâmetros)
    • punir o modelo para evitar que ele aprenda dados desnecessários (regularização)
    • melhorar a qualidade dos dados

    E para evitar underfitting fazemos o contrário:

    • tiramos a punição do modelo (regularização)
    • adicionamos nas novas colunas (informações)
    • removemos informações que não nos ajudam a aprender com os dados
    • aumentamos a quantidade de ferramentas usadas pelo modelo
    Compartilhe
    Recomendados para você
    BairesDev - Machine Learning Training
    Savegnago - Lógica de Programação
    meutudo - Mobile Developer
    Comentários (1)
    Natanael Silva
    Natanael Silva - 15/04/2024 09:35

    bom.