ti_publica:notas_deep_learning
Tabela de conteúdos
Dicas Deep Learning
Estou estudando Deep Learning (IA) no fast.ai e guardo aqui minhas anotações.
Referências externas:
- Reforço matemática:
Lição 2
O que pode dar errado
- Taxa de aprendizado (LR) muito alta;
- Taxa de aprendizado muito baixa;
- Número de iterações (epochs) muito alto;
- Número de iterações muito baixo.
Learning rate padrão = 0.003. Pode ser alterada em max_lr:
learn.fit_one_cycle(1, max_lr=0.5)
Ajustes:
- Se sua perda na validação (valid_loss) está muito grande, sua LR está alta;
- Se sua perda no treino é maior que na validação: ou sua taxa de aprendizado (learning rate) está muito baixa ou o número de iterações (epochs);
- Não aumente tanto o número de epochs, ou seu modelo pode ficar treinado pra reconhecer apenas a sua fotografia e não qualquer fotografia daquele tipo
- O risco de treinar demais o modelo (e passar a reconhecer só suas fotos) é muito baixo. Isso pode ser percebido se seu erro caiu bem e depois começou a aumentar de novo durante as iterações
Dicas lição 2
- Não há como definir quanto material é necessário pra um treino, só testando. Se treinar com muitas iterações e o erro começar a piorar sem antes ter chegado onde quer, e se não tiver com um dos quatro problemas mencionados, pode precisar de mais dados.
- Dados desproporcionais (muito mais dados de uma das classes) também funcionam, teste. Se não funcionar uma ideia é fazer over sampling, copiando os dados que tem pra aumentar.
Álgebra
Equações lineares
- Notação equação reduzida da reta: y = ax + b
- a = coeficiente de inclinação da reta (tb chamado 'm'): m = Δy / Δx
- b = ponto onde a reta corta o eixo y
- Para operações matriciais é mais conveniente redigir como: y = ax1 + bx2, com x2 = 1 sempre
- Notação equação fundamental da reta:
y-b = m(x-a)
- Mais prática pra escrever a partir de m e um ponto (a,b), mas não dá a interceptação do eixo y
pi torch
Criando um vetor
x = torch.ones(n,2)
inicia um tensor com n linhas e 2 colunas, segunda coluna com '1's (vide álgebra pra facilitar operações matriciais)x[:,0].uniform_(-1.,1)
- cria dados randômicos entre -1 e 1 na primeira coluna do vetor:[:]
endereça cada valor na dimensão (no caso endereça toda a linha);0
pega a primeira coluna;uniform
vai criar distribuição uniforme randômica;- O '_' indica que não vai retornar valor, vai atribuir valor a variável referida.
- Se não usar um ponto '.' os valores serão inteiros e não pto flutuante. O bom é que basta um ponto em um dos números, dispensando os zeros, mas poderia ser usado
(-1.0,1.0)
ti_publica/notas_deep_learning.txt · Última modificação: 2019/10/01 16:08 por cartola