Summary ๐Ÿค™


  • ๊ธฐ๊ฐ„ : 21.8.23 ~ 21.9.2 (2์ฃผ)
  • Task : ์‚ฌ๋žŒ ์–ผ๊ตด ์ด๋ฏธ์ง€์˜ ๋งˆ์Šคํฌ ์ฐฉ์šฉ ์—ฌ๋ถ€, ์„ฑ๋ณ„, ๋‚˜์ด ๋ถ„๋ฅ˜
  • ํŒ€ ๊ตฌ์„ฑ : ์œ ๊ด€์‹, ๊น€์ข…ํ˜„, ๊น€์ค€์„ญ, ์ด์œค์˜, ์กฐ์„ฑ์šฑ, ํ•œํƒœํ˜ธ


Index ๐Ÿ‘€



๋ชฉํ‘œ


์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ๋‚˜์˜ ์ฒซ๋ฒˆ์งธ ML ํ”„๋กœ์ ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์— ์ค‘์ ์„ ๋‘์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ–ˆ๋‹ค.

  • โ€œํ˜„์—…์ด๋ผ๋ฉด?โ€ ์ด๋ผ๋Š” ๊ณ ๋ฏผ์„ ์ง€์†์ ์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๊ธฐ (๋Œ€ํšŒ๋ฅผ ์œ„ํ•œ, ๋˜๋Š” ํ•™์Šต๋งŒ์„ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก)
  • ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ํ”„๋กœ๋•ํŠธ ์„œ๋น™ ์ง์ „๊นŒ์ง€์˜ ํ”„๋กœ์„ธ์Šค ์ดํ•ด
  • ๊ณต๋™์ž‘์—…์„ ์œ„ํ•ด ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ์˜ ์ค‘์•™ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ ๋ฐ ๋ชจ๋“ˆํ™”
  • pytorch, python์— ๋Œ€ํ•œ ์ดํ•ด
  • ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์— ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‚˜๋งŒ์˜ ํŒŒ์ดํ”„๋ผ์ธ ํŒจํ„ด ๊ตฌ์„ฑ

์š”์•ฝํ•˜๋ฉด, ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ๋ณด๋‹ค๋Š” ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์‹คํ—˜์‹ค์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์žก์•˜๋‹ค.

์ด๋Ÿฌํ•œ ๋ชฉํ‘œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋‚ด๊ฐ€ ์–ป์€ ์„ฑ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


ํ”„๋กœ์„ธ์Šค


์ด ํ”„๋กœ์ ํŠธ๋Š” ์ฃผ์–ด์ง„ ๋Œ€ํšŒ์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ๋•ํŠธ ์„œ๋น™ ์ „๊นŒ์ง€์˜ ๊ณผ์ •๋งŒ ์ง„ํ–‰ํ–ˆ๋‹ค.

  1. Data Analysis, EDA(Exploratory Data Analysis)
    1. ํ›ˆ๋ จ์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์–‘ํ•œ ๊ฐ๋„๋กœ ์‚ดํŽด๋ณด๋Š” ๊ณผ์ •์ด๋‹ค.
    2. input์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ์˜ feature๊ฐ„ ๋ถ„ํฌ, ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.
    3. label์˜ ๋ถ„ํฌ๋ฅผ ํ™•์ธํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ์˜ ๋ถˆ๊ท ํ˜• ๋ฌธ์ œ๋Š” ์—†๋Š”์ง€, ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ labeling์€ ์—†๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
    4. input๊ณผ label์˜ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.
    5. ์ •ํ•ด์ง„ ํ˜•์‹์€ ์—†์œผ๋‚˜, ํ˜‘์—…์„ ์œ„ํ•ด์„œ๋Š” ํ•œ๋ˆˆ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„, ์ฐจํŠธ ํ˜•ํƒœ๋กœ ๊ฐ€์‹œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  2. Data Processing
    1. Dataset
      1. raw data(์ด๋ฏธ์ง€)๋ฅผ ๋ชจ๋ธ์— feedingํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ด๋‹ค.
      2. ํ›ˆ๋ จ์„ ์œ„ํ•œ dataset์€ input๊ณผ label์„ ๋ฐ˜ํ™˜ํ•ด์ค„ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.
      3. Data Augmentation, label handling ๋“ฑ์˜ ๊ณผ์ •์ด ํฌํ•จ๋œ๋‹ค.
      4. ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋Š” ์šฉ๋Ÿ‰์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ํ•™์Šตํ•˜๋Š” ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋Š์‹œ์ ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ๊ฒƒ์ธ์ง€ ์„ ํƒํ•œ๋‹ค. (init ย  getitem)
    2. DataLoader
      1. Dataset์„ ํ•™์Šต ๊ฐ„ ํ™˜๊ฒฝ์— ๋งž์ถ”์–ด ํšจ์œจ์ ์œผ๋กœ feeding ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ด๋‹ค.
      2. batch size๋‚˜ multiprocessing ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค์ด ์ค‘์š”ํ•˜๋‹ค.
      3. Dataloader๋Š” cpu๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ ํ•™์Šต์ด ์ˆ˜ํ–‰๋˜๋Š” gpu๊ฐ€ ์ตœ๋Œ€๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ์œ„์— ์–ธ๊ธ‰ํ•œ ์š”์†Œ๋“ค์„ ์ ์ ˆํžˆ ์ž˜ ์กฐ์ ˆํ•ด์•ผํ•œ๋‹ค.
  3. Model
    1. ํ•™์Šต์„ ์ˆ˜ํ–‰ํ•  ๋ชจ๋ธ์„ ์ •์˜ํ•œ๋‹ค.
    2. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์™„์ „ํžˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋ธ์„ ์„ค๊ณ„ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ด๋ฏธ ๊ฒ€์ฆ๋œ ๋ชจ๋ธ์„ ๊ฐ€์ ธ์™€ fine-tuningํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋ธ์„ ์ •์˜ํ•˜๊ฒŒ ๋œ๋‹ค.
  4. Train
    1. Optimizer
      1. ๋ชจ๋ธ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ์œ„ํ•œ ๋ชจ๋“ˆ์ด๋‹ค.
      2. Adam์„ ์ฃผ๋กœ ์‚ฌ์šฉํ–ˆ๊ณ , Learning Rate ๊ฐ’๋„ Optimizer๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•œ๋‹ค.
    2. Loss Function
      1. label๊ณผ prediction์˜ ์ฐจ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•จ์ˆ˜์ด๋‹ค.
      2. CrossEntropy, FocalLoss, F1Loss ๋“ฑ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค.
    3. Monitoring
      1. ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ์ ํŠธ์˜ ํŠน์ง•์ด ๊ฐ€์žฅ ์ž˜ ๋‚˜ํƒ€๋‚ด์ฃผ๋Š” ๋ชจ๋“ˆ์ด๋‹ค. ์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋Œ€๋ถ€๋ถ„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ, ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ์ ํŠธ๋Š” ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๋ผ๋„, ์„ฑ๋Šฅ์ด ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ทธ๊ฒƒ์ด ๊ณณ ์˜ค๋ฅ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์ด ์ค‘์š”ํ–ˆ๋‹ค.
      2. Tensorboard๋ฅผ ํ†ตํ•ด loss, accuracy, f1score ๋“ฑ์„ ํ™•์ธํ–ˆ๋‹ค.
      3. ํ…์ŠคํŠธ ํŒŒ์ผ ํ˜•ํƒœ์˜ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ssh์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰์‹œํ‚ค๋”๋ผ๋„ ์ดํ›„์— ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.
      4. wandb๋ฅผ ํ†ตํ•ด tensorboard์™€ ๋น„์Šทํ•œ ์ฐจํŠธ๋ฅผ ๊ตฌ์„ฑํ–ˆ๋‹ค.
      5. ์–ด๋–ค ์‹œ์ ์— ์–ด๋–ค ์กฐ๊ฑด์œผ๋กœ ๋ชจ๋ธ์„ ์ €์žฅํ•  ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์ด ๋œ๋‹ค.
  5. Test
    1. Testset ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ inference๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    2. Trainset ๋ฐ์ดํ„ฐ์—์„œ ์ทจํ•ด์ฃผ์—ˆ๋˜ ์ „์ฒ˜๋ฆฌ๋ฅผ ๋™์ผํ•˜๊ฒŒ ์ทจํ•ด์ฃผ์–ด์•ผ ํ•™์Šต๋œ ๋ชจ๋ธ์˜ ์ •ํ™•ํ•œ inference๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค.


ํŒŒ์ดํ”„๋ผ์ธ


ํŒ€์›๋“ค๊ณผ ํ˜‘์—…์„ ํ•˜๊ธฐ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๋กœ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์กฐํ™”ํ–ˆ๋‹ค.

  1. ์ค‘์•™ ํŒŒ์ดํ”„๋ผ์ธ ์ฝ”๋“œ๋Š” ์ถ”์ƒํ™”๋œ ๋ชจ๋“ˆ, ๋˜๋Š” ์‹คํ–‰ ์‹œ์ ์˜ argument๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ—˜์˜ ๋‹ค์–‘์„ฑ์— ์ ์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ์‚ฌ์šฉ ์ฝ”๋“œ์—ฌ์•ผํ•œ๋‹ค.
  2. ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ์„ธ์Šค์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ ๋…ธ๋“œ ๋ณ„ ์—ญํ• ๊ณผ ์ฑ…์ž„์ด ํŒจํ‚ค์ง€๋กœ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.
  3. ๊ฐ ๋…ธ๋“œ๋ณ„ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ์€ ์ถ”์ƒํ™” ๋˜์–ด์•ผํ•˜๊ณ , ์ด๋ฅผ ์ƒ์†ํ•˜์—ฌ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค.
  4. ๊ฐ ํ›ˆ๋ จ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋ถ„์„์— ์šฉ์ดํ•œ ๋กœ๊ทธ๋กœ ๋‚จ์•„์•ผ ํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋ชฉํ‘œ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์กฐํ™” ํ•˜์˜€๋‹ค.


Hook์„ ํ†ตํ•œ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ


Train์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ •์€ ์œ„์˜ ์ˆœ์„œ๋„์™€ ๊ฐ™์ด ๋ฐ˜๋ณต๋˜๋ฉฐ, ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋˜์–ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์„ 3๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ hook์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ Train์— ๋Œ€ํ•œ ์ฝ”๋“œ๋Š” ๊ณ„์† ์žฌ์‚ฌ์šฉ ๋˜๋„๋ก ํ•˜์˜€๋‹ค.

  1. OptimHook
    1. Loss function์˜ ์ธ์ž ๊ฐ’์ด ์ถ”๊ฐ€๋กœ ์š”๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ
    2. Gradient๋ฅผ updateํ•˜๊ฑฐ๋‚˜, Accumulateํ•˜๋Š” ์ฒ˜๋ฆฌ
  2. BatchHook
    1. batch๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” hook
    2. log ๊ด€๋ จ ์ฝ”๋“œ ์ž‘์„ฑ (tesorboard, wandb, textlog โ€ฆ)
  3. EpochHook
    1. epoch๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” hook
    2. log ๊ด€๋ จ ์ฝ”๋“œ ์ž‘์„ฑ (tesorboard, wandb, textlog โ€ฆ)
    3. early stopping ๋“ฑ ํ›ˆ๋ จ ์ข…๋ฃŒ ์กฐ๊ฑด ์ฝ”๋“œ ์ž‘์„ฑ


๋งˆ์น˜๋ฉฐ


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