월간 데이콘 기계 고장 진단 AI 경진대회

알고리즘 | 음향 | 비지도학습 | 이상치 탐지 | Macro F1 Score

  • moneyIcon 상금 : 인증서
  • 930명 마감

 

[Private: 0.99716, 1st] Fast Fourier transform & Autoencoder

2023.01.20 14:16 4,578 조회 language

대회 참가하느라 모두 수고하셨습니다.
여러 참가자 분들의 방법을 보면서 많이 배울 수 있는 기회였습니다.
감사합니다.

코드
로그인이 필요합니다
0 / 1000
찌니찌니
2023.01.20 15:54

많이 배웁니다 감사합니다. 

파이썬초보만
2023.01.20 20:24

멋지네요! 축하드립니다

찌니찌니
2023.01.31 09:08

혹시 활성함수 어떤거 쓰셨을까요??

끌레도르
2023.02.01 13:28

안녕하세요, 활성함수는 따로 사용하지 않았습니다.

감사합니다.

허준호
2023.01.31 11:44

안녕하세요.
이상탐지에 AE를 사용하여 훌륭하게 수행하셔서, 본 코드로 공부중입니다.
궁금한게 있어 몇가지 질문드립니다.

1. 활성화 함수가 없어도 되나요?
2. 설정하신 Epoch, Batch Size, Learning rate에서는 분류가 매우 잘되는데, 해당 값을 변경하면 성능이 감소합니다.
예를 들어, Learning rate를 0.1배 감소시키거나, Batch Size를 64->256으로 증가 시키면 (통상적으로는) 성능의 변화가 크지않거나, 오히려 좋아지는 방향으로 가게 되는데, 히스토그램을 보면 성능이 감소하는것을 확인하였습니다.

본 값을 찾고 선정한 방법을 알 수 있을까요?
TrainDataset만 있다면, Test Dataset으로 정상/이상 분류가 잘 동작하는지 확인하면서 변경할 수도 없는데, 어떻게 좋은 파타메터인지 알고 선정했는지 궁금합니다.

끌레도르
2023.02.01 13:33

감사합니다, 많이 부실한 자료인데 도움이 되었으면 좋겠네요.
부족한 지식이나마 연구에 도움이 되었으면 하여 코멘트 남깁니다.

1. 네, 본 알고리즘에서는 따로 활성화함수는 사용하지 않았습니다. 오토인코더 학습 과정에서 활성화함수 유무가 복원 능력 향상에 큰 영향이 있진 않아서, 따로 사용하지는 않았습니다. 여러 활성화함수를 활용해보시는 것도 추가 성능 향상을 기대할 수 있지 않을까 싶네요.

2. 먼저 하이퍼파라미터의 경우, 다른 값을 활용했을 때 성능이 저하될 수 있을 거라고 생각합니다. Batch size나 learning rate은 데이터, 모델 파라미터 또는 손실함수에 따라 최적 값이 다르기 때문에 최적화하는 과정이 필요할 거라고 생각합니다. 여러 파라미터를 함께 조절해보시면 아마 비슷한 성능을 얻으실 수 있지 않을까 합니다. 

최적화 과정의 경우, 공유드린 코드의 내용이 좀 부족했던 것 같네요. 우선 제가 세운 가설은 '오토인코더가 정상 데이터를 잘 복원할 수 있도록 학습된다면, 이상 데이터가 들어왔을 경우에 기존 정상 데이터에 비해 큰 오차를 가질 것이다' 였습니다. 이에 따라 학습한 오토인코더의 손실 값이 충분히 작은 값을 가지는 지 비교하며 학습을 진행하였고, 추가로 복원된 데이터가 실제 정상 데이터와 유사한 주파수 특성을 가지는 지 평가하였습니다. 손실 값이 작은 경우에도 가끔씩 데이터가 의미 없는 noise처럼 복원되기도 하더라구요. (아마 정상 데이터가 가진 여러 특성을 포함하다보니 이런 trivial solution을 출력한 것이 아닌가 하고 생각합니다.) 이러한 과정을 통해 최적의 하이퍼파라미터를 선정하였습니다. 다만, 제가 시간이 부족하여 충분한 최적화 과정을 시도하지 못해서, 정상 데이터를 더 잘 복원할 수 있는 오토인코더를 구성한다면 성능 향상을 더 기대할 수 있지 않을까 하고 생각합니다.

도움이 되었으면 좋겠네요, 감사합니다.

이세의인공지능
2023.02.01 14:03

피드백까지 정말 많은 공부가 되고 있습니다. 앞으로도 많은 활동 부탁드립니다...!

허준호
2023.02.01 16:21

친절한 설명 감사합니다.

추가적인 질문 가능할까요?
AI를 접하고 첫 대회에 디스커션을 할 수 있는 장이 열려서 궁금한 것이 좀 많습니다 ^^;

1. 활성화 함수가 없는 딥러닝에 대하여.
- 제가 공부하고 찾아본 바로는 딥러닝에서 활성화 함수가 없는 경우에는 여러 레이어를 쌓아도 단층 레이어 하나와 동일한 결과를 가진다는 이야기를 들었습니다. (활성화 함수가 없으면 비선형이 되지 않기 때문에)
- 따라서, 제 생각에는 레이어를 아무리 깊게 쌓아도 8000 unit -> 8000 unit 하나 레이어 결과와 비슷해진다고 생각됩니다.
- 이러한 생각은 잘못된건가요? AE는 일반적인 경우와 다르게 활성화 함수가 없어도 딥러닝의 역할을 잘 수행하는 것일까요?

2. 하이퍼 파라메터 선정 방법 관련
- 하이퍼 파라메터 선정 방법 관련하여 자세한 설명 감사합니다.
- 결국 확인하신 방법은
    1. 파라메터를 변경하면서 Train Loss가 충분히 작아졌는지 확인
    2. 복원된 결과물이 실제 정상 데이터와 유사한 특성을 가지는지 확인 -> 의미없는 노이즈처럼 복원되는 여부 확인
이셨는데,
- 의미 없는 noise처럼 복원되셨다는게 어떻게 복원이 된건가요? 어떤 방식으로 확인하셨는지 궁금합니다...
- (예를 들어, 정상 데이터의 평균값과 복원된 결과물을 같이 그린 후 트렌드를 따라가는 방식?)

정말 많은 도움이 됩니다.
친절한 설명 감사드립니다.

끌레도르
2023.02.02 17:20

저는 인공지능 전공자가 아니어서, 답변의 신뢰성은 좀 떨어지겠지만 개인적인 의견 정도만 공유해드리겠습니다.
잘못된 정보가 있을 수 있는 점 양해 부탁드립니다.

1. 예, 말씀하신 부분이 맞다고 생각합니다. Linear layer를 간단하게 표현하자면, WX+b의 형태일 것입니다. 여러 개의 Linear layer가 합쳐지면 W1(W2…(WnX+Bn) + …) + B1의 형태로 요약될 것이고, 말씀하신대로 결국에는 WX+b 형태일 것이기 때문에 단층 레이어와 동일한 구조로 해석할 수 있지 않을까 하고 생각합니다. 다만, 공유드린 코드에서는 레이어를 여러 개 활용하고 있는데 이 부분은 초기 모델이 레이어를 깊게 쌓고 활성화함수를 적용해보는 과정에서 구축한 모델이라 정리가 되지 않은 부분이라고 생각해주시면 될 것 같습니다. 실제로 단층 레이어로 간단하게 실험을 해 봤는데, 위 결과와 비슷한 복원 능력을 보여주더라구요. 코멘트를 통해 저도 배워가네요, 감사합니다.

2. 의미 없는 noise의 의미는, 일반적으로 FFT를 수행하게 되면 특정 주파수 성분이 가진 된 형태의 신호가 발생합니다. (공유해드린 코드 중간에 Data example을 참고하시면 될 것 같습니다) 그런데 가끔 학습하는 과정에서 손실 값은 작은데, 별 의미 없는 복원 데이터가 발생하더라구요. (https://en.wikipedia.org/wiki/White_noise 비슷하게 생긴 이미지 링크를 걸어드립니다) 이런 데이터는 의미 없는 복원 결과물이라고 판단했습니다. 복원이 잘 된 경우에도, 특정 주파수 값들이 실제 비슷한 주파수에서 피크가 발생했는지, 또 그 진폭 값이 유사한 지도 정성적으로 판단하였습니다. 정량적인 기준이 있으면 좋을 것 같은데, 단순히 손실 값만 가지고는 판단하기 어려운 부분이 있었습니다.

궁금한 게 생기면 언제든 덧글 남겨주세요.
짧은 지식이나마 공유해드리겠습니다, 감사합니다.

kkubuck
2023.02.22 14:25

많이 배웠습니다. 감사합니다.

선빈
2023.03.24 09:33

혹시 Anomaly Score에서 X축과 Y축이 의미하는게 무엇인지 알 수있을까요?
X축은 np.mean(X-X_hat) 인거 같은데
Y축이 어느부분을 참고해서 십만 단위로 표현이 되는지 이해가 가지 않아서요.