사용자 도구

사이트 도구


2018_08

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
2018_08 [2018/08/16 07:54]
ehmoon
2018_08 [2021/04/13 06:54] (현재)
줄 339: 줄 339:
 내일부터는 DNN 관련 코딩 실습해보고 나머지 진도 진행해야 함. 내일부터는 DNN 관련 코딩 실습해보고 나머지 진도 진행해야 함.
  
 +\\
 +\\
 +\\
 +
 +===== 17일 금요일 =====
 +
 +[Study]
 +
 +모두를 위한 머신러닝 lecture 9. Backpropagation 실습 lecture 10. DNN Breakthrough
 +
 +어제 이론수업듣고 중간에 멈춘 9장 실습 진행. 이 전에는 1 Layer의 뉴런으로 학습하여 문제를
 +
 +해결했었고, activation function은 시그모이드로, cost function은 엔트로피로 돌렸었는데
 +
 +이 모델이 성능이 좋을것 같지만, XOR 문제를 (비선형적인 문제) 학습하여 돌려보면 accuracy가
 +
 +엉망이 됌. 이유는 하나의 뉴런으로는 선형문제를 해결할 수가 없기때문. (물론 요즘에는 커널
 +
 +알고리즘이라고 해서 차원을 늘려 위아래로 쪼개는 방법도 나왔다고 하지만 단순히 뉴런을 이용한
 +
 +모델에서는 해결할 방법이 없다는 것이 명백히 증명되었음)
 +
 +이 문제를 해결하기 위해 뉴런을 하나 더 늘리고 (Layer를 늘리고) W의 input개수와 output개수를
 +
 +잘 맞춰서 돌려보니 높은 accuracy 나옴. 그리고 tensorflow 노드들의 값이 변하는 과정을
 +
 +찍어보는 방법으로 tensorbord 사용하는 방법도 실습해 봄.
 +
 +다음으로는 10장 DNN의 Breakthrough에 대해 강의를 들었는데, 이 내용을 이해하려면 
 +
 +DNN의 연구적인 흐름을 알아야 함.
 +
 +먼저 MIT AI Lab의 창립자였던 Minskey 그리고 Papert가 저서를 통해 현재의 퍼셉트론으로는 
 +
 +XOR 가 절대 불가능하다라는 것을 수학적으로 증명함. 그뿐아니라 하나의 퍼셉트론이 아닌 MLP 
 +
 +(Multilayer Perceptron)을 통해서 XOR는 해결될 수 있지만, 각각의 weight와 bias를 학습시킬 
 +
 +방법이 없다라는 결론에 이르게 됨. 즉 이건 절대 해결할 수 없다고 저술하였고, 많은 사람들이 
 +
 +이 책을 읽고 공감하게 됨. 그렇게 딥러닝의 빙하기가 약 10년간 이어지다가 딥러닝의 대부 
 +
 +Geoffrey Hinton이 이 문제를 해결하는 논문을 발표함. 이게 그 유명한 Backpropagation 
 +
 +알고리즘. activation function을 sigmiod로 사용하고, 중간의 W과 b의 값들이 결과에 미치는
 +
 +영향력을 미분으로 계산해냄으로써 모든 뉴런들의 W와 b를 계산해냄. 중요한 부분은 이 과정에서
 +
 +앞의 계산 결과를 뒤의 연산에서도 사용하므로 계산량의 부담이 절감된다는 것.
 +
 +이후로 큰 선풍을 얻고 많은 연구가 진행되다가 두번째 빙하기가 찾아옴.
 +
 +DNN의 길이가 길어지면 Backpropagation연산을 할때 input layer와 가까운 부분의 뉴런들이
 +
 +학습이 되지 않는 현상이 발생. 이유는 sigmiod function이 값이 작아질 경우 0에 가까운 값을
 +
 +곱해버리게 되니까 앞에서 밀려오던 weight 정보들이 손상되어버리는 것.
 +
 +이를 vanishing gradient 문제라 부름.
 +
 +그로부터 약 10년 뒤 이 문제를 해결하는 방법으로 Geoffrey Hinton이 유명한 breakthrou 논문을
 +
 +발표. 지금까지의 DNN이 제대로 학습되지 않았던 이유를 4가지 꼽으면서 해결책을 제시
 +
 +대표적인 예로는 w값들의 초기화 문제와 activation function 사용의 문제를 듬.
 +
 +10장에서는 이러한 연구 과정을 정리하면서 문제가 됐던 코드를 실행해 봄.
 +
 +여기서 tensorflow 에 큰 매력을 느낀게, 최신 논문들에서 제시한 다양한 알고리즘 및
 +
 +딥러닝 모델들이 그대로 구현되어있고, 원하는 모듈만 가져다 사용하면 된다는 것.
 +
 +DNN 모델 만들어놓고 mnist 데이터로 성능이 향상되는 과정 보면서 매우 흥미로웠음.
 +
 +다음주 부터는 딥러닝의 꽃인 CNN과 RNN에 대해 본격적으로 시작해야 함.
 +
 +연구가 많이 밀리고있지만, 내 성격상 공부에 탄력을 받았을때 끝장을 보는게 좋겠다는
 +
 +생각임. 빨리 끝내고 연구와 함께 개발 진행하면 좋을것 같음.
 +
 +\\
 +\\
 +\\
 +
 +===== 20일 월요일 =====
 +
 +[Research]
 +
 +content extraction의 평가 프레임워크를 만들기 위해서는 수집해놓은 mht 파일의 feature를
 +
 +parsing해오는 작업이 필요함. 그래서 구글링을 해보니, 로컬 html 파일을 dom tree로 바꿔주는
 +
 +parser는 많이 존재해도 mht를 다이렉트로 파싱해주는 라이브러리는 거의 찾을 수 없음.
 +
 +결국 해결책은 일단 mht 파일을 html 파일로 converting을 하고 DOM tree로 파싱을 해야함.
 +
 +mht 파일 컨버팅 라이브러리 찾아봐야함.
 +
 +만약 feature를 잘 찾아냈다고 해도 비교하는 기준에 따라 성능 평가가 다르게 진행됨.
 +
 +일단 가장 먼저 DOM Tree끼리의 유사도를 비교하는 방법을 구현해보기 위해
 +
 +DOM tree similarity에 대해 찾아보니 이것 역시 잘 나오지 않음.
 +
 +그나마 찾은것은 예전에 눈문세미나 하면서 알게되었던 tree edit distance.
 +
 +LCS를 Tree에 응용한 기법인데 두개의 DOM element간에 같다 다르다의 정보를 넘어
 +
 +어느정도 같은지를 확률값으로 알 수 있기 때문에 유사도를 측정하기에 좋은 알고리즘임.
 +
 +라이브러리가 거의 없는것 같으니 논문 보면서 이 알고리즘 구현해야 할것 같음.
2018_08.1534406050.txt.gz · 마지막으로 수정됨: 2021/04/13 06:54 (바깥 편집)