활성화 함수 Mish: Self Regularized Non-Monotonic Activation Function을 시도했습니다.

목적



짚에 갈고 싶은 생각으로,,, 활성화 함수 Mish를 시험해 보았다.
(실제는, 좀 더 편하게,,,, 하지만, 뭔가 훌륭한 것 없을까...라고 하는 생각에서.)

Mish란?



Mish는 다음과 같은 형태의 활성화 함수입니다.

출처 : htps : // 기주 b. 코 m / 아암 타미 s 등 98 / 미 sh



사용해 본 결과



위의 github
( htps : // 기주 b. 코 m / 아암 타미 s 등 98 / 미 sh )
의 코드를 사용했습니다.

구체적으로는
htps : // 기주 b. 코 m / 암타미 s et 98 / 미 sh / t ree / ma s r / 에 mp ぇ s % 20 an d % 20 ben ch 마 rks


cifar-10-resnext-50-mish.ipynb
의 코드를 이동했습니다.

주피터 노트를 사용하는 방법을 모르기 때문에이 IN 코드를
풀어서 움직였습니다.

코드의 변경점 1(움직이는 의미에서는, 1행만 변경.)



움직인다는 의미에서는 1행만 변경.
아래 댓글 달기
#print(os.listdir("../input"))

코드의 변경점 2(자신의 노트북 편의로, 3행 변경)



훌륭한 PC의 경우는, 이 변경은 불필요.
와타시는 훌륭하지만 굉장히 훌륭하지 않은 노트북으로,
Geforce GTX 1050Ti
그러므로

resnext-50

이동하려면 메모리가 부족한 것 같습니다.

배치 크기를 극단적으로 줄였습니다. 16으로 했습니다. 원래는 128이나 64였다고 생각합니다.
def get_training_dataloader(train_transform, batch_size=16, num_workers=0, shuffle=True):
def get_testing_dataloader(test_transform, batch_size=16, num_workers=0, shuffle=True):
batch_size = 16

코드의 변경점 3(cifar10을 대상으로 하고 있으므로, augmentation이 부족하다고 생각했기 때문에.)



augmentation을 적당히 늘렸습니다.
    transforms.RandomCrop(32,padding=8),
    transforms.ColorJitter(brightness=0.5),


이하도 1/10으로 했습니다.
learning_rate = 0.0001

결과 발표! ! accuracy 결과 (cifar10)



하루 정도 움직였습니다만, epoch는, 아직, 50 정도.

Test accuracy: 0.9025..

⇒보통 결과. 앞으로 하루 정도 움직여 보겠습니다. . .
Epoch 40/100.. Time per epoch: 1337.4019.. Average time per step: 0.4280.. Train loss: 0.3072.. Train accuracy: 0.8935.. Top-3 train accuracy: 0.9848.. Test loss: 0.3861.. Test accuracy: 0.8870.. Top-3 test accuracy: 0.9823
Epoch 41/100.. Time per epoch: 1338.3242.. Average time per step: 0.4283.. Train loss: 0.3007.. Train accuracy: 0.8952.. Top-3 train accuracy: 0.9858.. Test loss: 0.3657.. Test accuracy: 0.8917.. Top-3 test accuracy: 0.9829
Epoch 42/100.. Time per epoch: 1340.5420.. Average time per step: 0.4290.. Train loss: 0.2975.. Train accuracy: 0.8958.. Top-3 train accuracy: 0.9865.. Test loss: 0.3853.. Test accuracy: 0.8913.. Top-3 test accuracy: 0.9821
Epoch 43/100.. Time per epoch: 1340.4637.. Average time per step: 0.4289.. Train loss: 0.2878.. Train accuracy: 0.8994.. Top-3 train accuracy: 0.9864.. Test loss: 0.3520.. Test accuracy: 0.8999.. Top-3 test accuracy: 0.9856
Epoch 44/100.. Time per epoch: 1338.6670.. Average time per step: 0.4284.. Train loss: 0.2824.. Train accuracy: 0.9005.. Top-3 train accuracy: 0.9869.. Test loss: 0.3827.. Test accuracy: 0.8941.. Top-3 test accuracy: 0.9839
Epoch 45/100.. Time per epoch: 1330.7962.. Average time per step: 0.4259.. Train loss: 0.2768.. Train accuracy: 0.9018.. Top-3 train accuracy: 0.9876.. Test loss: 0.3541.. Test accuracy: 0.9025.. Top-3 test accuracy: 0.9845

Mish에 대한 코멘트 (감상?)



부추긴 듯한 기술 기사를 보고 시험했지만, 그만큼 흥미를 끄는 결과는 얻어지지 않았다.
예를 들어, 검출 정밀도를 추구할 때, 이것이 크게 공헌하는 기분은, 조금, 하지 않았습니다.
예를 들면, ReLU에서 105층의 것이, Mish에서 102층에서 같은 성능이 나온다든가, 그러한 레벨로 느낀다. 최고 성능은 조건 프리라고 같은 정도로는? ? (죄송합니다. 아무런 근거도 없지만...)

요약



이번에는 cifar10을 대상으로 했지만,
cifar10과 같은 간단한 문제의 경우,
과연, 활성화 함수 정도에서는, 훌륭한 일은 일어나지 않네요. . .

이제 조금 더 세상 평가를 기다리고 싶습니다.

미래



특별, 예정 없음.
코멘트 등 있으면 부탁드립니다.

좋은 웹페이지 즐겨찾기