본문 바로가기
Programming/Deep learning

특별편 10분 안에 미분 정리하기요.

by OKOK 2018. 1. 17.

표현하는 방법 함수를 엑스로 미분한다는 뜻입니다. 이런 재밌게 생긴 식들이 나옵니다. 델타 엑스를 아주 작은 값으로 보낼 때, 에프의 더한것과 더하지 않은 것의 차이를 나눈다. 순간 변화율입니다. 순간 변화율 이라는 것입니다. 그렇기 때문에 에프를 함수라고 가정했을 때 이만큼의 변화율 미분이라는 것이 그래디언트 디센트 알고리즘에서 필수적이라는 것입니다. 복잡하니, 이것을 간단하게 델타 0.01 이라고 합시다. 이런 함수를 생각해보도록 하겠습니다. 플러스 엑스에 엑스 엑스입니다. 오케이요. 네네 똑같습니다. 델타 엑스를 가정하는 것입니다. 오케이요. 받아들인다는 것이 어떤것인지 잘 몰랐습니다만, 네네,  내가 얼마나 모르는지를 먼저 알아나가는 것이 중요합니다요.  이것은 오케이요. 편미분에 대해서 배우도록 하겠습니다. 엑스에 대하 괜삼있습니다. 오케이요. 파셜엑스 파셜와이 입니다. 이 엑스에 대해서만 관심을 두고 나머지는 상수로 취급합니다. 


복합함수에 대해서 미분을 취할 때, 계산하는 방법을 말합니다. 이것을 계산할 때, 나누어서 하자 할때 그것이 바로 쥐를 오케이요. 아하 이것이 체인룰이었습니다. 체인룰이 여기서도 만나네요 아주 반갑습니다. 지난 번 비디오에서 이엑스 오알 방법을 2개의 유닛으로 뉴럴 네트워크로 어떻게 하는지 오케이. 직접 해보도록 하겠습니다. 그레디언트 알고리즘 입니다. 이 형태의 와이값의 형태를 가지고 코스트 함수를 정의합니다. 코스트 함수가 밥그릇 모양으로 생긴다면 더블유가 되는 것입니다. 상관없이, 그 점에서의 기울기를 구해서 러닝레이트에 ...  계속 내려가면 글로벌 가장 낮은점 글로벌 미니멈에 도달 할 수 있습니다. 이것을 구현하기 위해서는 어떤 점에대해서 미분 값이 필요합니다. 이 알고리즘을 우히새 미분값 구합니다. 엑스원이 와이에 끼치는 영향을 알아야 합니다. 네네. 각각을 알아야 조절 할 수 있습니다. 


백 프로파개이션 채인 룰을 사용합니다. 더블유 엑스를 지로 넣어보겠습니다. 이렇게 정의가 가능합니다. 수식을 그래프 형태로 표시해보도록 하겠습니다. 오케이요. 이 수식을 그래프로 옮기면 그대로 이렇게 되겠습니다. 포워드라고 해서 실제 값이 있습니다. 학습 데이터에서 값을 받아옵니다. 그런다음에 백워드로 실제 비문의 값을 계산하게 됩니다. 


우리가 이미 계산해두었습니다. 오케이요. 계산이 되어 있습니다. 그 다음 단계가 얼추 모두 구해져있습니다. 이 값은 알고 있다고 가정합니다. 여기서 궁금적으로 구하고 싶은 값은 엑스가 최종값에 미치는 영향을 알고 싶은 것입니다. 그다음으로 와이가 초기 와이가 쥐에 미치는 영향을 나타냅니다. 밖에서 온 것들에 대해서, 에프에다가 나의 로컬으 곱하면 됩니다. 이런 식으로 하게 되면 최종 입력값에서 최종 출력값까지의 최종 출력 값 갑들의 최종 미분값을 구할 수 있게 됩니다. 스그모이드. 제트가 쥐에 미치는 영향이 궁금합니다. 뒤에서부터 미분하면서 가면 됩니다. 


엑스오얼이 무엇인지 나타냅니다. 오케이요. 입력이고 출력입니다. 진리표로 나타냅니다. 엑스원 엑스투 이렇게 바꾸면 되겠습니다. 나가는 것은 와이 똑같은 형식으로 나타내기 위해서 입니다. 와이값이 0이 되고 이런식으로 쓰여있습니다. 서로 다른 값이 1이고 서로 같은 값이면 0이 됩니다. 오케이요. 고고. 모델을 학습한다음에 엑스값을 주게 되면 모델을 만들 것 입니다. 이 인스턴스 데이터를 어디서 읽어오도록 하겠씁니다. 엠피 어레이를 가져오도록 하겠습니다. 데이터 셋을 가져오도록 하겠습니다. 네네. 엑스원 엑스투가 있습니다. 2개를 입력으로 받고요, 일로 되고, 2개로 들어옵니다. 오케이요. 이렇게 웨잇과 바이어스를 정하면, 하이파시스를 정하면 얼마나 예측을 잘했는지 코스트는 어떻게 되어 있는지 계산하는지, 코스트를 미니마이즈 하기 위해서 옵티마즈 할 것입니다. 학습이 진행이됩니다. 진행 되는 것 똑같습니다. 트레이닝 테스팅 그대로  사용가능합니다. 오케이요. 학습한 다음에 잘했는지 못했는지 실전에 준다 이렇게 보면 됩니다. 하이파시스 0.5 보다 클때 트루라고 하고 0보다 작을떄 0이 되도록 캐스팅을 합니다. 그런 다음에 그 값이 실제 와이값 실제 정답에 해당되는 와이값과 같은지 아닌지를 비교합니다. 트루 펄스인지 살펴보도록 하겠습니다. 간단한 것 같은데 왜 안되는지..... 이렇게 되게 하는 것이 뉴럴 넷을 사용하는 것입니다. 일단이 아니라 레이어 하나를 더 붙이겠다 이것입니다. 출력 값을 넣으면 됩니다. 아하 레이어 값을 2개 하는 것입니다. 무조건 2단이 좋은 것은 아니지만, 이렇게 보시면 되겠습니다. 


웨잇의 크기를 잘 정해주어야 합니다. 엑스가 엑스원 엑스투 2개가 있어야 합니다. 출력은 몇개로 할 것인가. 2라는 숫자가 마음에 드니, 레이어의 아웃풋이 2라는 뜻입니다. 오케이요. 이렇게 레이억 나왔고요, 두번쨰 더블유2와 바이어2의 경우에 입력이 무엇인강 볼 때, 네네. 연결된 것을 하나씩 알아나가면 됩니다. 와이의 출력은 어떻게 나오는지 살펴보면 됩니다. 그런 다음에 최종 하이퍼시스를 구할 때는 시그모이드로 보내면 됩니다. 이렇게 간단하게 돌려보면 됩니다. 놀랍게도 소스코드는 같습니다. 1단에서 2단으로 변경한 것일 뿐입니다. 잘학습된 모델입니다. 정확성이 1로 나왔습니다. 로지스틱 레그레션으로는 안됬는데 네트워크를 몇개 연결 시키니까 더 잘 됬습니다. 넓은 것 와이드 뉴럴 네트워크로 사용해보도록 하겠습니다.


그러지말고 더 넓게 나가보도록 하겠습니다. 10개를 입력받아서 1개를 출력받습니다. 레이어 2에 아웃값과 똑같이 되겠습니다. 자연스럽게 와이드하게 한것입니다. 모델이 조금 더 잘 학습되었다는 것입니다. 깊게도 가고 넓게도 라 수 있습니다. 한개 두개 세개 4개 쭉쭉 갈수 잆습니다. 이래서 딥러닝이라는 것이 나왔습니다. 2개를 쌓았떤 방법으로 계속해서 쌓아나가면 됩니다. 넓게가고, 깊게 만들 수 있습니다. 아하 이렇게 되는 것이구나. 


텐서보드를 보면 그래프의 모양을 볼 수 있습니다. 그 값들을 그려낼 수 있습니다. 텐서 보드를 보면 많은 숫자를 보는 것입니다. 그것을 그래프로 보면 편리합니다. 숫자가 너무 많으니 복잡한 것을 깔끔하게 그래프를 그려보자 해서 그려나갑니다. 로스 펑션을 보여줍니다. step 에 따라서 로스가 어떻게 편하는지 그래프. 잘 되는지. 스텝이 되면서 코스트가 내려가는 것을 볼 수 있습니다. 텐서보드를 사용하기 위해서는 5가지 스텝이 있습니다. 바로 멋진 그래프를 볼 수 있습니다.  


보고 싶은 것을 셀렉합니다. 그리고 머지 합니다. 그리고 다음에 세션에 들어가서 서머리를 어디에 기록할 것인지 파일의 위치를 정하고, 파일의 위치를 정한다음에 그래프를 넣어줘하고 만듭니다. 오케이요. 그런다음에 서머리 자체도 텐서이기 때문에 실행시키기 위해서 세션 런에 ㅅ머리를 넣어주면 됩니다. 서머리가 데이터가 필요하다면 데이터를 넣어줍니다. 그리고 실행시켜서 실행시켜서 나와있는 서머리를 라이터를 라이터에 에드합니다. 에스를 스텝 몇번 돌리는지 정해주면 됩니다. 실제로 터미널에 가서 텐서보드 명령어를 마이너스마이너스 하고 로그를 디렉토리를 정해주면 됩니다. 


리모트에서 열어주어야 한다. 할 때 포트 포워딩이 있습니다. 기억했따가 그대로 사용하면 됩니다. 리모트 서버가 있습니다. 로그인 아이디가 있습니다. 로컬 호스트 포터가 몇에 할 것인지 정해져있느지, 로컬 몇번에 할 서인지. 로컬에서 이것을 할꺼야 로컬 번호를 할 것이야. 정해져있습니다. 연결이 되었습니다. 그 안에 들어가서 서버에서 서버상에서 텐서플로어 실행시키고 7007 번으로 접속을 하면 서버에 있는 것을 사용할 수 있습니다. 리모트된 텐서보드도 볼 수 있습니다. 오케이요. 


두 개의 러닝 레이트에 따라 다르게 변화하는 모습을 보고 싶을 때 사용하는 방법에 대해서 이야기를 합니다. 라이트 하는 부분에서 다르게 줍니다. 오케이요 엑스오알 다르게 줍니다. 하나의 디렉터리를 다르게 줍니다. 이 안에 여러개를 만들어 나갑니다. 런1 런2 런3 하이퍼시스를 다르게 해서 실행하도록 합니다. 그런 다음에 각각의 디렉토리에 대해서 패런트에 대해서 텐서보드를 실행시킵니다. 그럼 이런 형태로 여러개의 예를 들어 보겠습니다. 값이 떨어지긴 하는데 잘 일어나지 않는다. 아 상위 하위 이렇게 따로 주어서 하는 것이구나. 무엇을 로그할 것인지 기록할 것인지 서머리 해서 모은 다음에 이것을 어느 디렉터리에 쓸 것인지 그래프를 구하바니다. 서머리를 실행시키고요. 그런 다음에 결과값을 써주면 됩니다. 스텝값이 있으며 올려주면 됩니다. 오케이요 그것을 텐서보드를 실행시키면 됩니다. 포트 넘버를 주고 웹으로 접속하면 됩니다.


5가지를 계속해서 사용하면 됩니다. 그대로 쭉 사용하면 됩니다.