지금은마라톤중

멋사 AI스쿨 TIL - (32) 본문

멋쟁이사자처럼/Python

멋사 AI스쿨 TIL - (32)

달리는중 2023. 4. 18. 22:47

20203.04.17

 

 

질문🙋🏻‍♂️ : 이미지에서는 주로 CNN 합성곱신경망을 사용하게 되는데 기존 DNN이 갖고있는 어떤 문제점 때문에 합성곱 신경망을 이미지에 주로 사용하게 될까요?
고차원 데이터를 처리하기에는 적합하지 않다
DNN은 이러한 상관 관계를 고려하지 않고 모든 입력 픽셀을 독립적으로 처리하므로, 이미지에서 복잡한 패턴을 인식하는 데 어려움이 있습니다.

 

질문🙋🏻‍♂️ : tf.keras.layers.Flatten(input_shape=(28, 28)), 입력층에서 데이터를 1차원 벡터로 변환하게 되면 어떤 문제가 있을까요?
2차원 이미지만의 특성이 없어집니다
1차원으로 펼치는 과정에서 원래 이미지 픽셀의 위치정보를 왜곡하게 됩니다

 

 

질문🙋🏻‍♂️ : 합성곱 신경망에서는 이 문제를 어떻게 해결했을까요?

컨볼루션으로 특징을 추출

 

질문🙋🏻‍♂️ : 필터를 랜덤하게 행렬로 여러장 생성하게 되면 랜덤한 패턴이 필터 수 만큼 만들어지게 됩니다.
필터 안의 사이즈를 지정할 때 어떤 파라미터를 사용 할까요?


커널 사이즈

 

질문🙋🏻‍♂️ : 합성곱 연산을 통해 특징을 추출해 낸 것을 => 피처맵 
피처맵에 Activation Function을 적용한 것을 무엇이라 부를까요?
액티베이션 맵

 

질문🙋🏻‍♂️ : 패딩을 1로 하여 외곽을 0으로 채우면 어떤 효과가 있을까요?
력값과 출력값의 크기를 동일하게 맞춰줄 수 있음과 동시에 가장자리의 데이터고 고르게 학습시킬 수 있습니다

 

 

질문🙋🏻‍♂️ : 커널사이즈나 스트라이트값에 따라서 패딩을 1로 해도 출력값이 다르게 나오는 경우도 있지 않나요?
다르게 나오는 경우도 있습니다. 
주로 커널값을 3x3을, 패딩을 1로 사용하면 입력값, 출력값을 같게 만들게 됩니다.
스트라이드 값을 다르게 설정하면 출력값이 달라지게 됩니다.

 

질문🙋🏻‍♂️ : 스트라이드 값을 1로 설정했을 때와 크게 설정했을 때 장단점이 있다면?
스트라이드 값이 1이면 꼼꼼하게 학습을 진행하게 되고 크게 설정하면 건너띄며 학습하기 때문에 오버피팅을 방지할 수도 있지만 언더피팅 문제가 발생할 수도 있습니다. 대신 학습 속도가 빨라집니다.

 

질문🙋🏻‍♂️ : 풀링을 하면 어떤 효과가 있을까요? 
=> 이미지를 추상화 해주기 때문에 오버피팅을 방지할 수 있습니다. 
사이즈가 줄어들어들기 때문에 계산량을 줄여서 계산을 빠르게 할 수 있습니다.

 

 

질문🙋🏻‍♂️ : 앞쪽에 있는 층과 뒷쪽의 합성곱층의 결과를 보면 어떤 특징이 있을까요?

=> 이미지의 특징을 추상화 해서 추출한 것을 확인해 볼 수 있습니다. 다른 이미지가 들어왔을 때 추상화된 결과를 통해 일반화된 예측을 할 수 있게 됩니다.

 

 

● softmax 의 특징?

=> 확률의 합이 1이 되며 주로 멀티클래스 분류에 사용됩니다.

- sigmoid 는 0~1사이의 값을 갖습니다. 주로 바이너리 분류에 사용됩니다.

 

* sigmoid -> 은닉층의 출력층에서는 기울기 소실 문제로 인해 사용하지 않고 (ReLU를 사용), 분류의 출력층에서 사용된다!

 

팁❗️ :  이 이미지를 통해 전체적인 이해를 하는 것이 좋다

 

 

 

 

● 이미지를 불러오는 방법 =>

1) matplotlib 의 imread() : 기존 시각화 도구를 그대로 사용

2) PIL => 이미지 처리 등의 기능 사용

3) OpenCV => 주로 영상처리에 사용됩니다. 영상에서 프레임당 이미지 추출하고 변환 등에 사용

 

 

● 이미지의 사이즈가 불규칙하면 학습을 할 수 없기 때문에 리사이즈할 크기를 지정합니다.

원본 이미지는 100~200 내외입니다.

=> 이미지를 적당하게 만들어 줄 필요가 있어보입니다. 너무 크게 만든다면 어떤 문제가 있을까요?

 

용량이 커져서 연산에 시간이 오래걸립니다.

- 너무 작으면 -> 왜곡, 특징을 잃어버림 계산량이 줄어 학습 속도가 빨라짐

- 너무 크면 -> 확대되며 왜곡될 수도.. 계산량이 많아 시간이 오래 걸림 자세하게 학습할 수 있음

- 적절하게 설정하는 것이 중요하다!

 

 

팁❗️ : 네트워크 구조, 용어를 외우는 것이 중요하다! API는 외우지 않고, 문서를 보아도 된다

 

● 데이터셋을 나눌 때 어떤 방법으로 나눠야 하는지를 고려하면

=> 텐서플로, 파이토치 어떤 API를 사용하든 데이터셋을 나눠줄 때는 train, valid(test) 를 나눠주고 batch_size 지정, 이미지 사이즈 지정, class_mode 등을 지정하는 내용으로 구성되어 있습니다.

 

 

질문🙋🏻‍♂️ : PolynomialFeatures 수치데이터를 제곱해 준다면 어떤 효과가 있을까요?
종속변수와 비선형적 관계를 가지는 독립 변수를 설명 할 수 있도록 하고
모델 복잡도를 증가시켜서 성능을 개선합니다
데이터의 비선형성을 증가시킵니다 => 모델이 더 일반화를 잘 하여 설명력을 갖게 합니다.

 

질문🙋🏻‍♂️ : uniform 한 데이터에 주로 사용합니다. uniform 한 것은 무엇을 의미할까요?
값의 차이가 별로 없으면 특징을 구분하기가 쉽지 않기 때문에 제곱을 해주면 특징이 도드라지게 됩니다.

 

질문🙋🏻‍♂️ : 필터의 개수가 많다면 어떤 장단점이 있을까요?
여러가지 랜덤한 데이터를 학습할 수 있는 대신, 학습 속도가 오래 걸립니다

 

● ZFNet

ZFNet은 다양한 시각화 기법을 사용하여 네트워크의 특징 추출 과정을 시각화하고, 네트워크가 이미지의 특징을 어떻게 인식하는지를 이해하는 데 초점을 두었습니다. 논문에서 제안된 시각화 기법들은 네트워크의 각 레이어에서 추출된 특징 맵(feature map)을 시각적으로 표현하고, 이를 통해 네트워크가 이미지의 다양한 특징을 학습하는 과정을 분석하였습니다. 이를 통해 네트워크의 동작 원리를 더 깊이 이해하고, 모델의 성능을 개선하는 데 도움을 주었습니다

 

 Residual Block

ResNet의 핵심 아이디어 (Residual learning)

- 모델이 학습되는 과정에서 F(x) 전체를 학습하는 것 보다는, x는 그대로 넘겨주고, 잔여물만을 학습하는 과정

- 기존에 학습한 정보를 보존한 뒤 해당 정보에 추가적으로 정보를 학습한다는 아이디어

 

'멋쟁이사자처럼 > Python' 카테고리의 다른 글

멋사 AI스쿨 TIL - (33)  (0) 2023.04.18
멋사 AI스쿨 TIL - (31)  (0) 2023.04.18
멋사 AI스쿨 TIL - (30)  (0) 2023.04.18
멋사 AI스쿨 TIL - (29)  (0) 2023.04.18
멋사 AI스쿨 TIL - (28)  (0) 2023.04.18
Comments