코사인 형태로 훈련비율(learning rate)을 차츰 조정하면서 좀더 정확도를 상승시킬수 있는 방법이다. learning rate은 계속해서 수렴해서 마른걸레를 짜다가, 다시한번 크게 가져가서 또다른 optima를 찾는 노력을 할수 있다. 훈련시, 오차와 정답의 차이를 100% 바로 반영해서 가중치를 수정하는게 아니라, learning rate으로 지정되어 있는 정도로 훈련이 진행된다. 이 숫자는 보통 0.01 부터 대충 0.000001 정도 까지의 다양한 수를 골라 이 값으로 훈련할 수도 있지만다. 하지만, 이를 계속 변경하면서 여러 최적점을 탐색하거나 fine tuning과 같이 좀더 나은 최적점을 향해 찾아가게 할수있다. 하나의 훈련양만 조절하는것보다, 코사인 어닐링을 이용하는 편이 좀더 에러를 줄어들게 하는걸 알수있다. 하나 더 추가적으로 보면 각각의 restart지점마다, 다른 모델이 튀어나올수도 있는데 이를 활용해서 앙상블로 정확도를 더 높일 수 있다. 각각의 지점에 대해서 잘 저장해두었다가 (checkpoint) 불러서 결과를 합산하는 방식도 존재 코사인 어닐링과 모델 체크포인트 앙상블 방법 실제로 모두 자주 볼수 있는 방법이지만, 코사인 어닐링은 1사이클만 훈련양을 낮춰가면서 해볼 수 있는 반면, 앙상블 방법은 여러 에폭을 돌려야 하기 때문에 시간이 오래걸려 feasibility만 보는 개발 단계에서는 시간제약이 있을 수 있다. 관련 논문 : SGDR: Stochastic Gradient Descent with Warm Restarts, Ilya Loshchilov, Frank Hutter / Snaptho ensembles : Tran1, Get M For Free
배치 정규화(표준화)와는 다른 방향으로 데이터를 표준화 작업을 거치는 방법. 한 채널 내의 데이터들을 적당한 수로 모아서(그룹별) 이를 표준화 작업을 거친다. Batch Normalization는 미니배치 N개를 기준으로 표준화 작업을 하지만, Group Normalization은 채널쪽의 데이터 일부(그룹)을 묶어 표준화 작업을 한다. 일반적으로 미니배치에서 표준화 작업을 거치는것보다는 미세하게 나은 정도지만, 강점은 배치수가 적을때에 있다. 해상도가 큰 이미지를 훈련하는 경우 시중에 나온 GPU로는 메모리가 터지는 경우가 존재한다. 또한 배치를 크게 줄수록 정확도가 미세하게 낮아지는 경우가 있어 부득이하게 배치를 10 이하로 낮추는 경우가 존재한다. 이렇게 적은 수의 배치를 돌려야 하는 경우가 많은데 이러한 경우에도 정해진 그룹안의 수에 맞춰서 표준화 작업을 하면 배치 Normalization의 이점을 누릴 수 있다. 해당 방법은 최근(2020년)에는 배치 노말라이제이션보다 정확도를 높여야 할 경우 고려되는 방법으로 모델링 시 자주 보인다. 그룹 노말라이제이션은 당연하게도 배치수에 별다른 차이를 받지 않는다. 관련 논문 : Group Normalization, Yuxin Wu, Kaiming He
미니배치에서 (보통은) 활성화 함수전에 해당 데이터들을 모두 Z-score 와 유사한 방법으로 표준화 (Normalization) 함으로써 빠르게 수렴하고 강건(robust) 하게 만드는 방법이다. 결과적으로는 정확도 상승에 도움을 준다. 정확도 상승을 위해 거의 필수적으로 구현하고 있다. 잘 보면, 미니배치 대상의 평균과 분산을 더해 Z-score를 계산한다. epsilon은 분모 0 방지를 위한 미세한 값이며, 마지막에 감마와 베타로 다시 조정하기는 하지만, 여튼 Z-score에 기반한다. 관련 논문 : Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift, Sergey Ioffe, Christian Szegedy Normalization의 번역은 컨텍스트에 따라 다른데, 여기서는 Z-score와 유사한 방법으로 표준화를 하기 때문에 일반적인 L1, L2 regularization과 구분할수 있도록 표준화라 했다.
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks, Mingxing Tan, Quoc V.Le 2019다양한 Convolution Net들이 출현중인데 한가지의 공통점이 존재. 깊이를 깊게 하거나 넓이를 넓게 하거나 구조를 다양하게 해서 좀더 정확도가 높은 지점을 찾는다는것EfficientNet은 이 구조의 효율성을 찾아내 정확하게 예측력과 컴퓨팅파워를 절묘하게 균형을 맞춰서 SOTA를 달성구조가 복잡할수록 비례적으로 정확도는 증가하나 복잡도도 또한 증가.B0(빠름), B4(효율좋음), B7(예측력정확) 정도가 주로 쓰임 부분에서 효율적인 구조를 찾았기 때문에, 앞으로는 EfficientNet을 빼놓고 벤치를 논하기가 불가능할듯 하다.
U-net이나 Decoder의 경우 이미지의 크기를 역으로 키울 필요가 있다. 업 샘플링으로 14 -> 28로 변한것을 알수있다. UpSampling2D는 케라스 기준 내부적으로 resize_images() 를 호출한다. 즉, 적은 해상도를 일부러 고해상도로 올리는것이다. 단순히 잡아 늘리는 역할으로 바로 Conv2D의 함수가 호출되어야 될 필요가 있음Conv2DTranspose는 Convolution 연산이 들어가서 해상도를 키운다. 이 연산은 당연히 학습과정에서 필터가 학습이 된다. 보통은 H, W가 줄어들고 Feature map갯수에 따라 차원이 늘기 때문에 익숙한 개념은 아니지만, 패딩을 적당히 섞으면 H, W가 늘어나는것도 당연히 가능하다. 좀더 자세한 부분은 아래 출처 참조. https://towardsdatascience.com/types-of-convolutions-in-deep-learning-717013397f4d
UNet++: A Nested U-Net Architecture for Medical Image Segmentation, Zongwei Zhou et al, 2018 Unet에서 Skip Path에 컨볼루션 레이어가 추가된 tuning된 형태의 네트워크Contracting path에서 Extracting path로 전달하는 feature map에 다시한번 여러 레이어를 추가함으로써 추가적인 예측률 확보Unet의 U자형 shape는 사실 Encoder – Decoder형태에 몇번의 스킵하는 커넥션이 있는 형태의 네트워크또한 스킵하는 커넥션은 결국은 Mask RCNN에서도 밝혀진 바와 같이, 예측률을 좋게 하는데 필수적. skip connection부분이 훨씬 많은 레이어로 강화되었다. 검정색은 오리지널 Unet, 그리고 초록색과 파랑색은 Skip path의 컨볼루션 레이어다. Skip Connection 부분에 위와같은 컨볼루션 블럭을 채워놓음으로써, 바로 전달되는것보다는 Feature map자체가 Decoder가 조금더 학습하기 좋게 전달Unet++의 위와같은 복잡한 네트워크는 Mask RCNN등에도 적용 가능, Unet++의 인코더에는 EfficientNet과 같은 백본도 이용 가능 네트워크의 인풋이 한두군데서 받는것이 아니기때문에 흡사 알고리즘 문제의 동적계획법을 보는듯이 짜여져 있다. H()는 컨볼루션 오퍼레이션, U는 업샘플링 레이어, []는 concat을 뜻한다. Unet++에는 이것만으로는 허전했는지 deep supervision이라는 방법을 끝단에 추가한다. 이는 출력값을 평균을 내서 예측률을 좀더 끌어올리고자 하는 것으로 보인다.
U자형 모형으로 되어있는 네트워크로, 의료영상 Segmentation 분야에서 비교적 높은 예측률을 보여옴.모델은 이미지의 컨텍스트를 학습하는 Contracting path과 정밀한 영역을 표시하기 위한 Expanding path로 나눠짐.둘은 서로 대칭관계 대칭형의 모양을 가진 u-net이지만, 사실은 평평하게 그려놓고 아치로 연결선을 표현한것과 다름이 없다. Contracting path는 3X3 컨볼루션과 ReLU, 그리고 2X2 Max Pooling, 그리고 2stride로 학습Expanding path는 2X2 컨볼루션인데 feature channel을 대신 절반으로 줄이는 연산을 함다만 Expanding path는 Contracting path에서 학습한 feature map을 그대로 붙여서 사용함 이전의 방식은 컨텍스트와 정밀한 영역간의 트레이드 오프가 있었으나, 이러한 방식으로 두마리 토끼를 동시에 잡음 학습 데이터가 많지않은 의료 데이터 특성을 반영을 잘 했기 때문에 비교적 적은 데이터로도 학습이 가능. 패딩을 하는 과정. 자세히 보면, 이미지가 복사되었음을 알수있음. 바운드에서 벗어나는 곳 경계선은 다른 부분을 그대로 복사하여 사진 가운데로 느끼게끔 보충 weight map을 통해 경계선에 대한 가중치를 줘서 구별이 더 잘되게 함, 셀들을 골라내는 작업도 중요한 분야가 있기 때문에 이러한 경우에는 weight map으로 보정다만 병변범위가 구별될 필요는 없는경우 위와같은 과정이 필요없을 수 있음이미지를 나눠서 그리드별로 섞는 등의 적당한 데이터 어그멘테이션도 진행이 되었다고 언급. 마지막의 드랍아웃 레이어도 간접적인 어그멘테이션이 진행되었다고 하ㅓㄹ수있음 논문과 대회를 우승한 시기는 2015년으로, 다소 연식이 된 편이며, Unet++등으로 발전 우승한 ISBI 2015의 경우, Intersecotion Over Union 기준 우승을 차지. 논문 마지막에는 Nvidia Titan GPU (6G)로 단지(?) 10시간정도의 학습소요시간이 걸렸다고 언급.
기본적으로 제공되는 feature importance는 보통 가지에서 몇번 등장하는지, 혹은 불순도를 얼마나 낮추는 지에 대한 지표이다. 이러한, 방법의 문제점은 -영향을 주는 feature를 알수 없다는 것이다.순열 특성 중요도는 답이 있는 test set에 대해서, 혹은 validation set에 대해서 한번에 한개씩 feature를 선택한다음 해당하는 값들을 죄다 의미없는 값(value)들로 바꿔버린다.비슷한 방법으로 Leave one feature out방법이 있지만, 해당 feature를 제외한채 훈련을 해야하기 때문에 훨씬 자원소모적이다.
Pierre Geurts, Extremely Randomized Tree, 2005랜덤 포레스트보다 랜덤화된 요소를 가지고 있는 트리트리 분기 시 컷포인트(cut-point)를 찾을때 이를 랜덤으로 결정분류문제는 투표로, 회귀문제는 평균으로 결과치를 산출.논문상 랜덤 포레스트보다 미세하기 앞서며, 노이즈 데이터에 대해서는 결과는 랜덤포레스트와 비슷하다는 제보. Draw a random cut-point 라고 되어있는 부분이 핵심. 사용자들의 이해도가 높지는 않아 단일로는 잘 쓰이지 않으며, 각종 대회등에서 앙상블 용으로 많이 이용.분기되는 지점을 랜덤으로 선택하기 때문에 훈련속도가 랜덤 포레스트보다 약 세배정도 빠른편으로, Scikit-Learn에 구현이 되어있음. PST – Pruned Single Tree, TB – Tree Bagging, RS – Random Subspace, RF – Random Forests 단일트리모델을 제외하고는, 앙상블 모델끼리의 유의할만한 차이는 보기 힘들다는 판단
Gao Huang, Snapshot Ensembles: Train 1, get M for freePavel Izmailov, Averaging Weights Leads to Wider Optima and Better Generalization, 2019 신경망 모델 다수를 앙상블링 하는 방법은 대회등에서 꾸준히 정확도를 높이기 위해 사용되어왔던 방법다수의 여러개의 모델을 만들기 위해서는 하나를 만들때보다 N배의 컴퓨팅 자원 필요. 이를 효율적으로 학습하고자 한번의 학습으로만 다양한 모델을 반영하도록 유도Snapshot Ensembling – SGD가 local optima (국소최적화) 지점을 찾기위해 계속 공간을 돌아다니도록 하고, 이를 반복하여 다양한 가중치들을 찾고, 이를 평균냄Fast Geometric Ensembling (FGE) – 훈련율 (learning rate)를 consine대신 linear하게 설정하여 조금더 빠르게 학습이 될수 있도록 함. 여러 골짜기(local optima)들이 중간중간 박혀있는 것이 아니라, 보통은 계곡이 계속되기 때문SWA에서는 굳이 여러 모델들의 파라미터를 가지고 있지않고, 프로그래밍에서 값을 업데이트 하는 것처럼 weight를 업데이트 한 다음, 최종적으로 돌때는 이미 업데이트가 되어있는 방식 여러개의 국소값들을 찾아 이를 합치는 방식 (Snapshot Ensembling) 실질적인 국소 최적화 지점 (Fast Geometric Ensembling) Stochastic Weight Averagin 에서 한번씩 값을 업데이트 하는 방법
현재 트렌드로는 다양한 합성곱 신경방등이 넓이(width), 깊이(depth), 해상도(resolution) 등의 여러가지 다양한 특성으로 합성곱 신경망 모델을 구성depth – resnet같은 경우를 예로 들면, 깊이에 따라 정확도가 높아짐 (일정이상은 높아지지 않고, 1000이상이면 무용지물)width – 여러가지 filter를 적용하여 width가 길어진 네트워크는 많은 fine-grain feature를 훈련할수 있음. 다만 너무 깊이가 얕으면 추상적레벨의 feature를 반영하지 못할 수는 있음.resolution – 당연히 해상도가 높아지면 정확도가 높아지지만, 600X600정도 이상이면 정확도 상승폭에 비해 하드웨어 무리결국 정확도 상승을 위해 극한의 하드웨어 성능이 필요한 정도로 모델이 커지지만, 상승폭은 계속 줄어들게 됨.이 셋의 밸런스를 잘 맞추는것이 제일 가성비(?)가 좋은 네트워크를 만들게 됨.따라서 Efficient Net은 메모리, CPU에 따라 제일 좋은 효과를 얻을 수있는 공식을 찾아내기 시작 효과는 다음과 같이, 적은 자원으로도 State of the art 를 뛰어넘는 높은 정확도를 달성할수 있음을 보임
Mask R-CNN, Kaiming He, 2018바운딩박스와 이미지 예측뿐만아니라 픽셀마다 해당 물체에 속하는지 마스킹까지 해주는 방식 (Instance Segmentation)기본구조 Faster-RCNN까지 같고, 이에 마스킹 레이어까지 추가출력이 두개(분류, 바운딩박스) 에서 K*m*m mask 출력 추가 세 프로세스는 병렬로 이루어짐각각의 Proposal의 픽셀에 대해 하나하나 마스킹 이진 분류기존의 방법은 픽셀당 멀티클래스 분류Faster-RCNN에서 RoIPool로 뭉개진 원본 픽셀 정보를 RoIAlign으로 원본에서의 위치를 유추RoIPooling시 원본 이미지와 stride를 통한 RoI가 정확히 나눠지지 않아 소수점을 버리는데(quantization) 이를 개선하기 위한 보간법 이용.Loss Function은 L(cls) + L(box) + L(mask)로 이루어짐마스크의 경우 해당 분류의 마스크만 이진 크로스 엔트로피로 계산ResnetXt101-FPN(Feature Pyramid Network) 방식의 백본이 정확도가 가장 높음속도는 5FPS(Frame per second)으로 실시간 검출 가능사람 포즈 검출도 중요 키포인트에 마스킹을 하는것으로 구조 이용 가능. RoIAlign을 통해 마스킹을 하는 방법을 소개한 Mask RCNN RoIAlign을 통해 보간하는 방법 헤드 구조 averaged over IoU thresholds 벤치마킹
Ross Girshick, Region-based Convolutional Networks for Accurate Object Detection and Segmentation, 2015최대한 그림을 분할 후, 이를 가까운 분할별로 통합하는 작업 (Selective Search)를 통해 ~2000개의 후보 Region을 산출분할별 통합에는 shape, texture, color, size별로 유사도 계산각각의 Region별로 CNN을 적용하여 feature 추출 후 멀티클래스 분류Bounding Box에는 회귀방법이, 최종 예측은 SVM(Support Vector Machine)방법 적용 논문에서 제시하는 분류결과 논문에서 제시하는 분류 정확도
Lowe. D. G (Distinctive Image Feature from Scale-Invariant Keypoints, 2004)시점 : 1997~이미지와 크기와 회전에 불변하는 특징을 추출하는 알고리즘.스케일이 축소된 일련의 이미지들 (이미지 피라미드) 에서 동일하게 검출되는 Scale Invariant 한 Feature 추출코너성을 측정하기 위해서는 DoG(Difference of Gaussian) 을 이용하여 스케일별 Laplacian 계산특징점이 풍부한 경우에 유리 키포인트 셀렉션 단계 스케일이 작거나, 커도 모두 검출 Disclaimer ! 딥러닝이 대두하기 전의 기법
바운딩 박스는 아래처럼 물체를 감싸는 박스를 나타낸다. 예쁘게 잘 감싸줘야 필요한 정보만 가지고 잘 판단할수 있을것이다. x, y는 박스의 좌표를 말하며, w와 h는 너비와 높이를 뜻한다.다만 w와 h는 로그로 한번 감싸여져 있다. Groundtruth가 있을 경우, 이를통해 Proposal과 비교하면서 서서히 위의 수치들을 맞춰갈수 있다. 따라서 바운딩박스를 맞추는 문제 또한 수치를 적합하는 회귀문제 # 참고자료 https://www.slideshare.net/aurot/auro-tripathy-localizing-with-cnns
SGD : Stochastic Gradient Descent, 조금씩 기울기를 수정해나가는 방식으로, 기본에 속하지만 방향이 다른경우 기울기가 달라져 탐색경로가 비효율적. 속도가 후에 나온 옵티마이저보다 훨씬 느린편임.Momentum : SGD에 가속변수를 하나 추가하여 탐색이 가속적AdaGrad : 개별 매개변수에 적응적으로 학습률을 조정하면서 학습을 진행. 즉 초반에는 빠르다가 점차 감소해가면서 갱신해감RMSProp : 지수 이동평균을 이용해(Exponential Moving Average)초반 기울기보다는 최근의 기울기 정보를 반영해감.Adam : 모멘텀과 AdaGrad의 장점을 취한 방법으로 편향 보정이 진행 참고 및 시각화 출처 https://github.com/Jaewan-Yun/optimizer-visualization https://emiliendupont.github.io/2018/01/24/optimization-visualization/
sklearn.metrics 라이브러리를 까보면, 흔히쓰는 R스퀘어 (결정계수)말고도 비슷한 개념의 metrics가 한개가 더있다. 바로 설명분산점수(Explained Variance Score)인데 사실 R제곱 자체가 1 – (Sum of Squared Residuals / Total Variance) 로 정의되어있기 때문에, 이게 도대체 뭔 측정도구인지 싶을때가 있다. 코드를 까보면 아래와같이 설정되어있다.Explained Variance Score = 1 – ( (Sum of Squared Residuals – Mean Error) / Total Variance ) 유일한 차이는 SSR에 Mean Error를 뺀다는것이다. 만약 모델이 얼추 제대로 맞추고 모델에서 나오는 오차는 별 트렌드없이 0을 기준으로 왔다갔다 한다면 둘의 값은 거의 비슷할것이다. 다만, 에러가 한쪽에 쏠려 있다거나 한다면 일단은 모델이 좀 편향되게 (잘못) 피팅이 되었다는 것이고 이는 Mean Error가 0에 가까운 값이 아닌 – 나 +를 띄게 된다. R제곱과 설명분산점수가 다르게 나온다면 에러에 편향이 있다는것이고, 피팅이 잘못되었다는것을 뜻한다.굳이 부각되지 않은것은 어차피 잔차에 편향이 존재하지 않아야 회귀분석이 제대로 이뤄진것을 가정하기 때문이다. 직관적으로 이해하자면, 설명분산점수는 결정계수와 다르게 경향성도 제거하기 때문에 눈꼽만큼 나은 지표지만, 실질적인 이득은 없어보인다.
Fine-Tuning 새로운 데이터로 다시한번 가중치를 세밀하게 조정하도록 학습. 기존 데이터는 기존대로 분류Feature Extraction기존 가중치는 그대로 놔둔뒤, 새로운 레이어를 추가해서 이를 학습하고 최종 결과를 내게끔 학습Joint Training새로운 데이터를 추가하여 처음부터 다시 시작Learning without Forgetting새로운 데이터로 가중치를 세밀하게 조정하되, 기존 데이터 분류 결과 또한 개선 가능(하다고 주장) Li, Zhizhong, and Derek Hoiem. “Learning without forgetting.” In European Conference on Computer Vision, pp. 614-629. Springer International Publishing, 2016. https://arxiv.org/abs/1606.09282
사전
Recent Posts