DAY 4 : VIT | F1_Loss | LrScheduler

210826

VIT

๋‚˜๋ฆ„ ์ด๋ฏธ์ง€๋„ท์—์„œ Rank 1, 2์˜ ์ŠคํŽ™์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” VIT๋ฅผ ์จ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ด์ „์— ์“ด efficientnet ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ง์ ‘ ๋‹ค์šด๋ฐ›์•„์„œ ๋ถˆ๋Ÿฌ์™”๋Š”๋ฐ, timm ์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ๋ชจ๋ธ์„ ์‰ฝ๊ฒŒ import ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ torchvision.models ์™€๋Š” ์ข…๋ฅ˜๋„ ๋” ๋‹ค์–‘ํ•˜๊ณ  ์ตœ์‹ ์ด๋ฉฐ ๊ฐœ๋ณ„ ๋ชจ๋ธ์˜ ์ข…๋ฅ˜๋„ ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•˜๋‹ค.

์˜ค๋Š˜ ํ•˜๋ฃจ๋Š” ๊ฑฐ์˜ VIT์˜ ์„ฑ๋Šฅ์„ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ผ๋‹ค. ๊ฒฐ๋ก ์€,

์„ฑ๋Šฅ์ด ์ฅ๋ฟ”๋„ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค

์˜ค๋Š˜ ๊ณ ์ƒํ•œ ๊ฒƒ๋“ค์„ ์‚ฌ์ง„๊ณผ ์ฝ”๋“œ๋กœ ์ข€ ๋‚จ๊ฒจ๋‘˜ ๊ฑธ ๊ทธ๋žฌ๋‹ค. ๊ฑฐ๊ธฐ๊นŒ์ง€๋Š” ์ƒ๊ฐ ๋ชปํ•˜๊ณ , ์‚ฝ์งˆ์„ ํ•˜๋‹ค๋ณด๋‹ˆ ์ง€์ณ์„œ ์šฐ๋ฐœ์ ์œผ๋กœ VIT์™€ ๊ด€๋ จ๋œ ํŒŒ์ผ์„ ๋‹ค ์ง€์›Œ๋ฒ„๋ ธ๋‹ค. ์†์€ ์‹œ์›ํ–ˆ๋‹ค

์ด ๋ถ€๋ถ„์—์„œ ๋ฉ˜ํ† ๋‹˜๊ณผ ์ด์•ผ๊ธฐํ•ด๋ดค๋Š”๋ฐ, ๋ฉ˜ํ† ๋‹˜๋„ VIT๋กœ ์„ฑ๋Šฅ์„ ๋‚ด๋ณธ์ ์ด ์—†๋‹ค๊ณ  ํ–ˆ๋‹ค. VIT๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์…‹์ด ๋ณดํ†ต ๋ชจ๋ธ๊ณผ ๋น„๊ตํ•ด์„œ ํ›จ์”ฌ ๋งŽ์•„์•ผ ๋˜๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ๋งŒ๊ฐœ์ •๋„์˜ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•œ ํ•™์Šต์„ ๊ฑฐ์น˜๊ธฐ ํž˜๋“ค๊ฒƒ์ด๋ผ๊ณ  ํ–ˆ๋‹ค. EfficientNet ๋งŒ์„ธ

F1_LOSS

์ง€๊ธˆ ์‚ฌ์šฉํ•˜๋Š” Loss ํ•จ์ˆ˜๋Š” nn.CrossEntropyLoss ์ธ๋ฐ, ๊ทธ ์™ธ์—๋„ ๋‹ค์–‘ํ•œ Loss ํ•จ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ๋“ค์„ ์‹คํ—˜ํ•ด๋ดค๋‹ค.

์‹ค์ œ๋กœ ์‹คํ—˜์ƒ์œผ๋กœ๋Š” Symmetric ํ•จ์ˆ˜๊ฐ€ ์ œ์ผ ๋†’์€ valid f1 ์ ์ˆ˜๋ฅผ ๋ƒˆ๋‹ค. ๋‹ค๋งŒ focal ํ•จ์ˆ˜์™€๋„ ๋’ค์น˜๋‹ฅ ๊ฑฐ๋ฆด ์ •๋„๋กœ ๋น„์Šทํ–ˆ๋‹ค. ๋ฐ˜๋ฉด ์ œ์ผ ๊ธฐ๋Œ€ํ–ˆ๋˜ f1 ํ•จ์ˆ˜๋Š” ์„ฑ๋Šฅ์ด ์ œ์ผ ์•ˆ๋‚˜์™”์œผ๋ฉฐ cross entropy ์™€ label smoothing ์€ ์„ฑ๋Šฅ์ด ๊ฑฐ์˜ ๋™์ผํ–ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” symmetric์„ ์ฃผ๋กœ ์“ฐ๋‹ค๊ฐ€, focal๋„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์จ๋ณด์•˜๋‹ค. ๋ญ๊ฐ€ ์ข‹์€์ง€๋Š” ํ™•์‹คํžˆ ์•Œ ์ˆ˜๊ฐ€ ์—†์ง€๋งŒ focal์ด ์„ฑ๋Šฅ์ด ๋” ์ž˜๋‚˜์˜ค๋Š” ๋А๋‚Œ์„ ๋ฐ›์•˜๋‹ค.

LrScheduler

์Šค์ผ€์ฅด๋Ÿฌ์˜ ์„ฑ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฌผ๋ก  ์„ธ๋ถ€์ ์ธ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ์ฐจ์ด๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋‚ด๊ฐ€ CyclicLR์„ ์‚ฌ์šฉํ•  ๋•Œ ์“ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • STEP_UP : ๋ฐ์ดํ„ฐ๋กœ๋”์˜ ๊ธธ์ด

  • STEP_DOWN : ๋ฐ์ดํ„ฐ๋กœ๋”์˜ ๊ธธ์ด * 2

    • ์‹ค์ œ๋กœ๋Š” len(train_dataset)//CFG['train_bs'] ๋กœ ๊ตฌํ–ˆ๋‹ค.

  • base_lr : 1e-6

  • max_lr : 1e-3

  • cycle_mometum = False

  • mode = triangular2

triangular2์˜ ํ•™์Šต๋ฅ  ๋ณ€ํ™” ๊ทธ๋ž˜ํ”„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ด ๊ทธ๋ž˜ํ”„๋ฅผ ์›ํ–ˆ๋˜ ์ด์œ ๊ฐ€ ์žˆ๋‹ค.

  • ํ•™์Šต๋ฅ ์€ ์ ์  ์ž‘์•„์ ธ์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์„ ๋‚ด๋Š” ์ง€์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

    • mode = triangular1 ๋‚˜ cosine ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ด์œ 

๋˜, ํ•™์Šต๋ฅ ์„ 1e-3๊ณผ 1e-6์œผ๋กœ ํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ž˜, ๊ฐ€์žฅ ๋นจ๋ฆฌ ์ฐพ์•˜๋‹ค.

  • 1e-2๋‚˜ 1e-7๋กœ ํ–ˆ์„ ๋•Œ๋Š” ๋”๋Ž ๋‹ค.

Last updated

Was this helpful?