프로젝트/2021 한이음(probono)

[프로보노프로젝트/딥러닝] 딥러닝 기초

pxatd 2021. 7. 16. 00:17
728x90

*개인적으로 공부하고 메모 형식으로 작성한 글이라 내용이 불친절합니다.

책) 딥러닝 첫걸음_김성필


인공지능>머신러닝>딥러닝

같은 데이터를 사용하면 다른 데이터를 넣었을 때 잘 인식하지 못할 가능성이 있다. 따라서 학습데이터와 입력데이터는 달라야 한다. 머신러닝 기법을 사용할 떄는 실제 데이터의 특성이 잘 반영되어있고 편향되지않은 학습데이터를 확보하는 것이 중요하다. 학습데이터와 입력데이터가 달라져도 성능차이가 나지 않게 하는 것을 일반화라고 하며 가장 중요하다 (이게 목적임)

과적합?


그래프를 보고 이해하는게 편한데, 들쭉날쭉하지만 대체로 일방적인 분포를 보이는 그래프가 있음 여기서 개체로 직선인 곡선을 그리면 100% 정확하진 않지만 어느정도 분포에 따름, 그러나 만약 들쭉날쭉 한 그래프 그대로 그리게되면 100%정확도를 자랑하지만 만약 그 사이에 a라는 데이터가 들어왔을때 원래였으면 x로 판별했겠지만 정확한 곡선에 따라 y로 판별할 수 있음 이런게 과적합. 학습데이터에 대한 오류를 줄이는 건데 이런 식으로 했더니 일반화 성능은 더 떨어지는 상황 발생

과적합 극복?
1. 정칙화
복잡한 모델일수록 과적합이 일어나기 쉽다. 학습 데이터에 대한 모델의 성능을 약간 희생하더라도 모델을 최대한 간단하게 만들어 과적합에 빠지지않도록 하자는게 정칙화의 기본 전략이다. 하지만 실제 문제에서는 대부분 입력 데이터의 차원이 높기 때문에 그림으로 그려서 과적합 여부를 직관적으로 알아내기는 불가능하다. 따라서 고안된 새로운 방법이 검증

2. 검증
학습데이터의 일부를 따로 떼어내어 학습에는 사용하지 않고 모델의 성능 검증용으로 사용하는 기법을 말한다. 학습 데이터에 대한 모델의 오차로는 과적합 여부를 판단하기 불가능하니 일부 학습 데이터를 사용해 과적합을 검증하겠다는 의도임 학습된 검증 데이터를 입력해 성능 저하가 심하면 과적합으로 보고 모델을 수정하는 등 조취를 취함
1) 학습데이터를 학습용 데이터와 검증용 데이터로 나눈다. 보통 8:2 비율로 사용
2) 학습용 데이터로 모델을 학습시킨다.
3) 겁증용 데이터로 모델의 성능을 평가한다. (성능이 떨어질 경우 2단게부터 다시 수행)

3. 교차검증
검증을 약간 변형한 기법임 두 데이터를 고정하지 않고 계속 바꿔준다는 점이 다르다. 검증용 데이터를 고정해놓으면 모델이 검증용 데이터에도 과적합될 여지가 있기 때문이다. 검증용 데이터를 무작위로 바꿔서 과적합 여부를 더 잘 판단하도록 하겠다는게 교차 검증의 핵심 아이디어임

머신러닝의 종류?
1. 지도학습
연습문제와 정답이 학습 데이터에 존재, 학습데이터는 입력과 정답이 쌍으로 구성된다.
지도학습의 데이터 => {입력, 정답}

2. 비지도 학습
비지도 학습의 경우 학습데이터는 입력만 있고 정답은 없는 형태로 되어있다. 비지도학습은 주로 데이터의 특성을 분석하거나 데이터를 가공하는데 사용된다.
지도학습의 데이터 => {입력}

3. 강화학습
강화학습은 입력과 해당 출력, 그리고 이 출력에 대한 평과의 쌍을 학습데이터로 사용한다. 주로 제어나 게임 플레이 등 상호작용을 통해 최적의 동작을 학습할 때 사용한다.
강화학습의 데이터 => {입력, 출력, 출력에 대한 평가점수}

지도학습은 비지도학습과 강화학습에 비해 상대적으로 쓰임새가 많다.

분류와 회귀?
지도학습은 모델의 쓰임새에 따라 크게 분류와 회귀문제로 나눌 수 있다.

분류란?
말 그대로 입력 데이터가 어느 범주에 속하는지를 알아내는 문제이다. 몇가지 예를 들어보면 스팸메일 분류 서비스 -> 메일을 정상/스팸으로 분류, 숫자인식 서비스-> 숫자 이미지를 0~9 중의 하나로 분류, 얼굴 인식 서비스-> 얼굴 이미지를 등록된 사용자 중의 하나로 분류
분류 문제에서 학습 데이터는 다음과 같은 형태를 갖는다. {입력, 해당범주}={입력,정답}
분류문제에서 우리가 알고싶은것은 입력이 속하는 범주라서 정답을 범주로 준 것이다.

회귀란?
범주를 추정하는게 아니라 어떤 값을 예측한다. 예를들어 특정 사람들의 나이별 소득데이터가 주어졌을 때 나이에 따른 소득을 예측하는 모델을 구하려 한다면 회귀문제가 된다. 여기서 학습데이터는 (x,y) x는 나이, y는 소득을 나타낸다.

요약하면 입력데이터가 어느 범주에 해당하는지 판별하는 모델을 찾아야 한다면 분류 문제가 되고 입력 데이터의 추세를 예측하는 모델을 찾는다면 회귀문제가 된다.

728x90