24.11.13
마스터클래스
inference 결과를 보고 error case가 얼마나 score에 영향을 끼치는지 볼 것 -> 우선순위가 재정비 됨
kaggle - 의료 활발
채널 구성할 때
depth 인식을 시켜주기위해 depth를 잘라서 채널에 넣는다.
512x512가 depth 64라고 가정하면,
0번째와 첫번째 depth는 비슷할 수 밖에 없다.
붙어있는 값은 유사하다.
당시 사람들이 생각한 idea는 채널 영역에 비슷한 영역에 있는 depth를 넣으면 첫번째에서 예측을 못했더라도 두번째나 그 근처를 보면서 다른 depth영역을 통해서 예측의 정확도를 높일 수 있을 것이다.
이걸 2.5D Channel라고 불렀던 기법이다.
채널은 RGB.. 1channel은 grey.
depth는 이거와 다른 축 사이의 값
지난 경진대회 리뷰
hard voting .. 가장 많이 등장한걸 선택하는 방식을 채택
EDA with DeepLab+++
validation #1
Radius
Best performance at epoch: 2, 0. -> 0.0065
validation #3
finger-1 : 0.0000
finger-2 : 0.0000
finger-3 : 0.0000
finger-4 : 0.0000
finger-5 : 0.0000
finger-6 : 0.0000
finger-7 : 0.0000
finger-8 : 0.0000
finger-9 : 0.0000
finger-10 : 0.0000
finger-11 : 0.0219
finger-12 : 0.0000
finger-13 : 0.0000
finger-14 : 0.0000
finger-15 : 0.0000
finger-16 : 0.0000
finger-17 : 0.0000
finger-18 : 0.0000
finger-19 : 0.0000
Trapezium : 0.0000
Trapezoid : 0.0000
Capitate : 0.0000
Hamate : 0.0000
Scaphoid : 0.0000
Lunate : 0.0000
Triquetrum : 0.0000
Pisiform : 0.0000
Radius : 0.8451
Ulna : 0.3122
finger-11, Radius, Ulna
Best performance at epoch: 4, 0.0065 -> 0.0407
validation #5
finger-1 : 0.0000
finger-2 : 0.4215
finger-3 : 0.7073
finger-4 : 0.0000
finger-5 : 0.0000
finger-6 : 0.2102
finger-7 : 0.7508
finger-8 : 0.0000
finger-9 : 0.0001
finger-10 : 0.6774
finger-11 : 0.6737
finger-12 : 0.0000
finger-13 : 0.0000
finger-14 : 0.5053
finger-15 : 0.2594
finger-16 : 0.0000
finger-17 : 0.0000
finger-18 : 0.0000
finger-19 : 0.7035
Trapezium : 0.0000
Trapezoid : 0.0000
Capitate : 0.0641
Hamate : 0.0000
Scaphoid : 0.0000
Lunate : 0.0000
Triquetrum : 0.0000
Pisiform : 0.0000
Radius : 0.8407
Ulna : 0.8641
Best performance at epoch: 6, 0.0407 -> 0.2303
finger-2, finger-3, finger-6, finger-7, finger-9(0.001이지만), finger-10, finger-11, finger-14, finger-15, finger-19, Capitate, Radius, Ulna
Best performance at epoch: 6, 0.0407 -> 0.2303
여기서 잠깐!
지금까지의 진행 상황을 바탕으로 앞으로 방향성에 대해 생각해보자~!
Radius와 Ulna는 초기 학습 단계에서도 높은 정확도를 보인다.
반면에 finger는 정확도가 낮게 나타난다.
제안
성능이 낮게 나타난 뼈들(특히 손가락뼈들)을 중심으로 시각화를 진행
-> 성능이 낮게 나타난 뼈들(특히 손가락뼈들)을 중심으로 시각화를 진행
-> 손가락뼈에 특화된 데이터 증강 기법(Cutout, Mixup)
모든 뼈에 대해 정확도를 각각 계산하여 각 뼈마다 성능의 차이를 상세히 분석
-> 성능이 낮은 뼈에 대해 추가적인 데이터 증강이나 손실 함수 조정
Radius와 Ulna는
validation # 7
finger-1 : 0.0000
finger-2 : 0.6705
finger-3 : 0.8605
finger-4 : 0.0000
finger-5 : 0.1990
finger-6 : 0.8264
finger-7 : 0.8776
finger-8 : 0.0000
finger-9 : 0.6196
finger-10 : 0.8857
finger-11 : 0.8856
finger-12 : 0.0000
finger-13 : 0.0693
finger-14 : 0.8534
finger-15 : 0.8520
finger-16 : 0.0000
finger-17 : 0.0000
finger-18 : 0.5184
finger-19 : 0.8735
Trapezium : 0.3531
Trapezoid : 0.0000
Capitate : 0.6840
Hamate : 0.5285
Scaphoid : 0.3729
Lunate : 0.3421
Triquetrum : 0.1914
Pisiform : 0.0000
Radius : 0.9428
Ulna : 0.9296
Best performance at epoch: 8, 0.2303 -> 0.4599
안됨: finger-1, finger-4, finger-8, finger-12, finger-16, finger-17, Trapezoid, Pisiform
validation # 9
finger-1 : 0.6278
finger-2 : 0.8718
finger-3 : 0.9109
finger-4 : 0.0000
finger-5 : 0.7590
finger-6 : 0.9208
finger-7 : 0.9134
finger-8 : 0.3540
finger-9 : 0.8672
finger-10 : 0.9381
finger-11 : 0.9366
finger-12 : 0.0000
finger-13 : 0.7793
finger-14 : 0.9150
finger-15 : 0.9271
finger-16 : 0.0000
finger-17 : 0.1219
finger-18 : 0.8722
finger-19 : 0.9250
Trapezium : 0.7682
Trapezoid : 0.5237
Capitate : 0.8404
Hamate : 0.7969
Scaphoid : 0.7587
Lunate : 0.7417
Triquetrum : 0.7582
Pisiform : 0.4029
Radius : 0.9635
Ulna : 0.9542
Best performance at epoch: 10, 0.4599 -> 0.6948
안됨: finger-4, finger-12, finger-16
validation #11
finger-1 : 0.7894
finger-2 : 0.9067
finger-3 : 0.9418
finger-4 : 0.7264
finger-5 : 0.8952
finger-6 : 0.9538
finger-7 : 0.9353
finger-8 : 0.7990
finger-9 : 0.9198
finger-10 : 0.9479
finger-11 : 0.9264
finger-12 : 0.6790
finger-13 : 0.8527
finger-14 : 0.9337
finger-15 : 0.9219
finger-16 : 0.3947
finger-17 : 0.6682
finger-18 : 0.9033
finger-19 : 0.9360
Trapezium : 0.8172
Trapezoid : 0.7046
Capitate : 0.8435
Hamate : 0.8361
Scaphoid : 0.8062
Lunate : 0.8034
Triquetrum : 0.8212
Pisiform : 0.6801
Radius : 0.9601
Ulna : 0.9521
Best performance at epoch: 12, 0.6948 -> 0.8364
Start validation #15
finger-1 : 0.8332
finger-2 : 0.8772
finger-3 : 0.9050
finger-4 : 0.8472
finger-5 : 0.8736
finger-6 : 0.9104
finger-7 : 0.8898
finger-8 : 0.8746
finger-9 : 0.9003
finger-10 : 0.9017
finger-11 : 0.8816
finger-12 : 0.8452
finger-13 : 0.8647
finger-14 : 0.9012
finger-15 : 0.8883
finger-16 : 0.8266
finger-17 : 0.8272
finger-18 : 0.8669
finger-19 : 0.8945
Trapezium : 0.8249
Trapezoid : 0.7521
Capitate : 0.8456
Hamate : 0.8303
Scaphoid : 0.8372
Lunate : 0.8064
Triquetrum : 0.8146
Pisiform : 0.6985
Radius : 0.9128
Ulna : 0.8962
Best performance at epoch: 16, 0.8364 -> 0.8561
validation #17
finger-1 : 0.8898
finger-2 : 0.9220
finger-3 : 0.9347
finger-4 : 0.8935
finger-5 : 0.9130
finger-6 : 0.9449
finger-7 : 0.9321
finger-8 : 0.9199
finger-9 : 0.9384
finger-10 : 0.9453
finger-11 : 0.9210
finger-12 : 0.8883
finger-13 : 0.9109
finger-14 : 0.9385
finger-15 : 0.9215
finger-16 : 0.8857
finger-17 : 0.8675
finger-18 : 0.9170
finger-19 : 0.9256
Trapezium : 0.8781
Trapezoid : 0.8201
Capitate : 0.8869
Hamate : 0.8679
Scaphoid : 0.8871
Lunate : 0.8482
Triquetrum : 0.8500
Pisiform : 0.7430
Radius : 0.9465
Ulna : 0.9326
Best performance at epoch: 18, 0.8561 -> 0.8990
Start validation #39
finger-1 : 0.9431
finger-2 : 0.9728
finger-3 : 0.9762
finger-4 : 0.9637
finger-5 : 0.9695
finger-6 : 0.9829
finger-7 : 0.9774
finger-8 : 0.9664
finger-9 : 0.9750
finger-10 : 0.9820
finger-11 : 0.9720
finger-12 : 0.9507
finger-13 : 0.9686
finger-14 : 0.9799
finger-15 : 0.9699
finger-16 : 0.9522
finger-17 : 0.9512
finger-18 : 0.9711
finger-19 : 0.9732
Trapezium : 0.9160
Trapezoid : 0.8900
Capitate : 0.9421
Hamate : 0.9262
Scaphoid : 0.9437
Lunate : 0.9326
Triquetrum : 0.9311
Pisiform : 0.8597
Radius : 0.9864
Ulna : 0.9844
Best performance at epoch: 40, 0.9497 -> 0.9555
Start validation #41
finger-1 : 0.9568
finger-2 : 0.9769
finger-3 : 0.9800
finger-4 : 0.9676
finger-5 : 0.9710
finger-6 : 0.9834
finger-7 : 0.9801
finger-8 : 0.9682
finger-9 : 0.9764
finger-10 : 0.9834
finger-11 : 0.9732
finger-12 : 0.9539
finger-13 : 0.9715
finger-14 : 0.9815
finger-15 : 0.9724
finger-16 : 0.9575
finger-17 : 0.9576
finger-18 : 0.9763
finger-19 : 0.9766
Trapezium : 0.9239
Trapezoid : 0.8980
Capitate : 0.9450
Hamate : 0.9344
Scaphoid : 0.9446
Lunate : 0.9276
Triquetrum : 0.9333
Pisiform : 0.8649
Radius : 0.9876
Ulna : 0.9859
Best performance at epoch: 42, 0.9555 -> 0.9589
Best performance at epoch: 60, 0.9609 -> 0.9637
멘토세미나
사람에 거의 가까워졌다는 느낌을 받아서 ai가 할 수 있는 전부를 하는게 아닌가? 하는 생각이 들기도 한다.
한교 로장공대
랜드마크 도서관
OpenAI의 논문을 소개해주실 예정
보통 chatGPT같은 생성형 AI는 이렇게 크게 두 단계로 진행된다.
조금 더 구체적으로는 강화학습을 통해서, (human feedback)
사람의 intention에 맞게 조정을 해준다.
계속 iteration을 돌면서 모델이 점점 똑똑해진다.
- 사람이 평가한다.
- DPO 어떻게 사람이 평가해준 데이터를 가지고 학습을 하는지
- (가정) human annotation의 질이 좋다.
사람이 못한다는건 그쪽의 전문가들도 레이블링 하기 힘든다는 것이다.
지금 superhuman 모델을 가지고 있지 않으니까 프레임워크를 , week모델이 strong모델이 더 똑똑해지는 프레임워크를 만드는 것이 논문의 목표이다.
예를 들면
어려운 데이터에 대해서(사람이 이해하기에도 어려운)
레이블이 완벽하지 않고 틀릴 때도 있을 것이다.
차례로 알렉스넷, 피쳐추출잘하는애(ViT)같은.. 왼 오 이다.
gt를 가지고 weak모델 학습시킨다. 그러면 데이터에 대해서 좀 알게 되겠지만 잘 알지는 못한다.
(AlexNet이 그러듯이..)
세개가 있다.
모델이
- 1->4
- 2->4
- 3->4
weak supervision을 있는 그대로 써야하고
(사람이라는 가정이 있기 때문에) 사람이 예측하는 순간부터 시작이 된다.
1.2배 똑똑한 모델을 먼저 만들고, 단계적으로 그 모델에서 1.5배 똑똑한 모델 만들고.. 이런식으로 단계적으로 사용
또 다른 아이디어로
자기 자신과, weak task를 함께 써보자는 아이디어도 있다.
weak모델을 사람이라고 생각했을 때,
보라색은 technic을 썼을 때 좀 더 상승시키는게 가능하더라..
신경을 쓰면 좀 더 사람에 가까운 모델을 만들 수 있다.
세번째는 나이브한걸 썼을 때보다 보라색을 만들 수 있더라(?)
이게 OpenAI의 발견
우리가 이 가능성을 열어놨으니까 다들 해보자?
strong모델과 weak모델이 얼마나 잘하는 정도로
질문
위크모델이 사람이라서 다시 학습이 불가능하다하셨는데 그럼 아까 말씀하신 부트스트래핑을 할 떄 위크모델이 점점 달라지는 것 아닌가요? 그럼 위크 모델이 바뀌는 것 이니까 학습이 가능한 것이 아닌가 궁금합니다! -> 답변 주셨는데, 그럼 요 부분에서 스트롱 모델이 다시 위크 모델을 학습해서 위크모델이 스트롱 모델보다 똑똑해지는 방법은 없을까요?
사람이기때문에 weak모델은 학습하지 않는다고 가정.
중간에 있는 애는 학습이 되는데 맨 왼쪽 애는 학습이 안되는 것
조금씩 답이 달라질 수 있다.
우리가 1000개의 이미지(이미지넷)
한번에 맞추려면 모델을 학습시키는게 힘들 수 있다.
co-supervise 혼자 100장 읽긴 힘들지만! 20장씩 나눠읽자!
질문하면 답이 나오는데
좀 더 correction으로 고쳐주는 aligner가 존재한다.
사람의 annotation 없이 모델을 학습시킬 수 있다면,
weak 모델 없이도 가능한거 아닌가??!!
unsupervised(사람의 label이 없어도 되는)
두번째는 모델이 스스로 자기를 똑똑하게 만드는 방