딥러닝:수치예측
편집하기
Sam
(
토론
|
기여
)
님의 2020년 10월 21일 (수) 09:48 판
(Sam님이
딥러닝이론:수치예측
문서를
딥러닝:수치예측
문서로 이동했습니다)
(
차이
)
← 이전 판
|
최신판
(
차이
) |
다음 판 →
(
차이
)
둘러보기로 이동
검색으로 이동
경고: 이 문서의 오래된 판을 편집하고 있습니다.
이것을 게시하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{딥러닝 이론}} ==개요== 선형회귀라고도 한다. 데이터가 나타나는 함수 형태를 찾아내려는 시도. ===전략=== '''경사하강법'''. 모델의 기울기를 조금씩 조정하는 최적화 알고리즘이다. y_predict=wx+b에서, 임의로 w,b를 정한 후, 샘플을 하나 선택하여 y를 계산한다. 이 계산값과 실제값을 비교하고, 둘이 가까워지게끔 w,b를 조절한다. 모든 샘플을 처리할 때까지 이 과정을 진행한다. '''오차역전파법.''' 자, 그렇다면 어떻게 조정할 것인가? 일단 값이 잘 안맞을 때, 정해진 만큼 w값을 조절한 후, 새로 만들어진 모델이 더 잘 예측하는지 살펴본다. 가중치 w,b를 업데이트 하려면 어떻게 하면 좋을까? 얼마나 변화시킬지에 대해 예상함수와 실제함수의 차이가 크면 크게 변화시키고, 작으면 작게 변화시키는 방법이 좋을 듯하다. 따라서 변화량의 분자엔 예상함수와 실제값의 차이가 포함되어 있어야 할 것이다. 분모는 대충 넣으면 될 듯하고... 그냥 각각 임의의 변화율에 오차를 곱하면 되리라 생각된다. '''에포크.''' 그런데, 그냥 생각해봐도 데이터가 나오는 순서에 따라 결과가 달라지리라 예상 가능하다. 하여, 모든 데이터를 사용하여 학습을 시키되, 이 방법을 많이 반복하는 전략을 사용한다. 모든 데이터를 사용하여 교육을 마친 것을 1에포크라 한다. 경우에 따라 수천번의 에포크를 거치기도 한다. 다음과 같은 형태로 100에포크를 학습한다.<syntaxhighlight lang="python"> for i in range(1,100): for x_i, y_i in 자료(x,y): 예상=x_i * w + b err=y_i-예상#실제값과의 차이 가중치#전략에 따라 가중치를 구한다. w=w+가중치 * err b=b+1 +err </syntaxhighlight>'''손실함수(비용함수, 목적함수)''' 손실함수란, 오차에 대한 함수를 의미한다. 그리고 이 손실함수를 최소로 만들 수 있을 때 적당한 모델을 찾았다고 말할 수 있게 될 것이다. 이 손실함수를 각 가중치에 대해 미분하면 가중치가 어느 방향으로 변해야 손실함수가 감소할지 찾아낼 수 있다. '''제곱오차 sequared error''' 모델에 대한 오차를 합해 단순 평균을 찾아내면 어떤 형태의 방정식이든 거의 0에 수렴하고 만다. 오차의 정확한 진단을 하려면 분산을 구하듯 오차^2를 해야 한다. 이를 통해 함수가 실제값을 제대로 예측하는가 여부를 살필 수 있다. 제곱오차함수의 최소값을 찾기 위해선 함수의 기울기에 따라 그 값이 낮아지는 쪽으로 이동시켜야 한다. 오차제곱을 가중치에 대하여 미분해 보자. 손실함수 SE를 미분한다. <nowiki><math>{\partial SE\over\partial w}={\partial \over\partial w}*(y-y\hat)^2=2(y-y\hat){-{\partial y\hat\over\partial w}}=2(y-y\hat)(-x)=-2(y-y\hat)x</math> 결국 이 값을 기존의 w에 더해주면 업데이트가 가능하다.</nowiki> ==뉴런 구현해보기== 뉴런 클래스를 만들어 보자. __init__(self): 를 통해 가중치의 값을 설정하고, 예상함수를 forpass(self, x): 형태로 만들어 예상값을 반환한다. 그리고 오차를 계산하여 가중치 값에 변화를 주기 위한 backpropagation(self, x, err): 를 만든다. 그리고 훈련을 위한 fit 함수를 만들어 가중치를 업데이트 한다.<ref>Do it! 정직하게 코딩하며 배우는 딥러닝 입문. 74p</ref>
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에서 사용한 틀:
틀:딥러닝
(
편집
)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보