자신이 여러 개의 알고리즘 온라인 저지(Online Judge) 사이트에서 문제를 풀고 있다면, 전체 소스코드를 편하게 관리하기 위하여 깃 허브(Git Hub)를 이용할 필요가 있습니다. 또한 특정한 문제를 만났을 때 자신이 이전에 해당 문제를 푼 경험이 있다면 깃 허브를 통해 바로 해당 문제의 소스코드를 확인할 수 있기 때문에 깃 허브를 이용하면 친구와 함께 알고리즘 공부를 할 때에도 큰 도움이 될 겁니다.

※ 깃 허브 가입하기 ※

  ▶ 깃 허브: https://github.com/

  깃 허브 공식 사이트는 위와 같습니다. 접속하신 뒤에 회원가입 및 로그인을 진행해주세요. 그러면 새로운 소스코드 저장소(Repository)를 생성할 수 있습니다. 아래 그림과 같이 말입니다.

  이후에 다음과 같이 하나의 리포지터리를 만들어주시면 됩니다. 저는 코드 업(Code Up) 사이트에서 푸는 문제의 소스코드를 저장하기 위해 'Code Up Algorithm'이라는 이름을 붙여 보았습니다.

  생성 이후에는 다음과 같이 깃 주소가 나오게 됩니다.

※ 깃 데스크탑으로 클론(Clone)하기 ※

  이후에 위와 같이 만든 깃 허브 리포지터리에 소스코드를 업로드하기 위해서는 깃 데스크탑과 같은 깃 허브 응용 프로그램이 설치가 되어 있어야 합니다.

  ▶ 깃 데스크탑 주소: https://desktop.github.com/

  위 깃 데스크탑 공식 사이트에 접속하고, 깃 데스크탑 소프트웨어를 설치한 이후에 아까 전에 깃 허브에 가입한 계정으로 로그인까지 진행하시면 됩니다.

  그리고 File → 'Clone repository'를 하여 클론(Clone)을 수행합니다.

  아까 전에 자신이 만든 깃 허브 리포지터리 주소를 그대로 붙여넣기하여 만들어줍니다. 그리고 해당 깃이 저장될 파일 경로를 지정해 클론(Clone)을 수행하시면 됩니다.

  이제 위와 같이 해당 파일 경로에 깃이 생성된 것을 알 수 있습니다.

※ 소스코드 작성 및 푸시(Push)하기 ※

 이제 한 번 다음과 같이 하나의 텍스트 파일을 생성해 소스코드를 작성해봅시다.

  그러면 아래와 같이 깃 데스크탑에서도 실시간으로 소스코드가 반영되는 걸 확인할 수 있습니다.

  깃 허브에 업로드하기 위해서는 먼저 아래와 같이 변경된 소스코드에 대한 설명을 기입합니다. 저는 제목으로 'Correct: 1001'을 입력했습니다. 그리고 'Commit to master'를 눌러 커밋을 진행하시면 됩니다. 이 때 커밋(Commit)은 자신 컴퓨터의 깃에 적용되는 것입니다.

  커밋 이후에 실제 깃 허브에 적용되도록 하려면 푸시(Push)를 해주시면 됩니다. 다음 그림과 같이 'Publish branch'를 누르시면 푸시가 진행됩니다.

  깃 허브에 업로드가 이루어지면 다음과 같이 깃 허브 사이트에 접속했을 때 업데이트가 되어있는 것을 확인하실 수 있습니다.



블로그 이미지

낭만가을

,

인공지능을 연구하는 사람들의 궁극적인 목표는 우리가 고민해야 하는 골치 아픈 문제들을 인공지능이 대신 생각하게 해주는 것이다. 그렇다면 생각한다는 것에 대한 연구가 먼저 이루어져야 하고 연구자들은 인간의 뇌를 공부하기 시작했다.

인간의 뇌는 아직까지도 완벽하게 연구되지 못 할 정도로 복잡하지만 뇌를 구성하는 기본 단위인 뉴런의 동작 원리는 놀랍게도 단순했다.

Neuron (출처 : http://sebastianraschka.com)

인간의 뇌는 기본 단위인 뉴런(Neuron)이 무수히 연결되어 있는 모습을 하고 있다. 뉴런 하나의 모습을 살펴보면 Dendrites라고 하는 부분에서 외부 신호를 수용하고 Axon을 통해 신호를 출력한다. 이런 뉴런이 무수히 많이 연결되어 있는 형태가 인간의 뇌다.

이런 뉴런을 수학적 모델로 다시 그리면 다음과 같다.

딥러닝(Deep Learning)의 기본을 이루는 뉴런

뉴런에 있는 각 Dentrites들은 시냅스(Synapse)라고 하는 접점을 통해 외부 뉴런과 연결된다. 뉴런은 입력으로 들어오는 여러 개의 신호들을 하나로 합산한 다음 Activation Function을 통해 자신의 출력으로 만들어 낸다. 만들어낸 출력은 다시 다른 뉴런의 입력으로 들어가게 된다.

이전에 다뤘던 Logistic Regression을 한 번 다시 보자.

입력값의 행렬인 X와 가중치의 행렬인 W를 곱한 값이 있고,

그 값을 시그모이드 함수에 통과시켰다.

이를 뉴런 모델에 적용하면 다음과 같이 그릴 수 있다.

딥러닝(Deep Learning)의 기본을 이루는 뉴런

뉴런으로 들어오는 입력들을 X라고 하는 행렬에 표현하고 각 입력에 해당하는 가중치를 W 행렬에 표현한다. 두 행렬을 곱한 값이 Cell body에서 수행하는 작업이며, 이 값에 시그모이드 함수를 적용한 값이 이 뉴런의 최종 출력값이 된다.

Multinomial Classification은 Logistic Regression 모델을 N 개 적용한 것과 같으므로 위 그림처럼 그릴 수 있게 된다. 이런 뉴런이 서로 복잡하게 얽혀있는 모습은 다음과 같이 그려볼 수 있다.

딥러닝(Deep Learning)의 기초인 뉴럴 네트워크(Neural Network)

각 뉴런들이 복잡하게 연결되어 있고 각 연결마다 가중치가 존재하게 된다. 이런 뉴런들의 복잡한 연결을 뉴럴 네트워크(Neural Network)라고 하며 딥러닝의 원래 이름이라고 할 수 있다.

머신 러닝 모델과 XOR 문제

머신 러닝 초기 연구진들은 인공지능에 대해 생각하면서 X1과 X2를 입력받아 Y를 출력하는 일종의 논리 게이트를 만들어 복잡하게 연결하면 인간처럼 논리적 사고를 할 수 있을 거라고 생각했다.

두 개의 입력 값을 받아서 새로운 결론을 도출해내는 모델을 생각해냈다. AND 연산과 OR 연산은 Linear 한 모델 하나로 분리가 가능했다.

(출처 : 모두를 위한 딥러닝 강좌 시즌1)

두 개의 입력 X1과 X2가 0, 1의 값을 가질 수 있을 때, OR 연산과 AND 연산은 하나의 직선으로 표현이 가능했다.

(출처 : 모두를 위한 딥러닝 강좌 시즌1)

문제는 XOR였다. 머신 러닝을 연구하는 연구진들은 이 XOR 문제를 간단한 모델로 풀 수 있는지를 고민했다. 그러다가 MIT AI Lab의 Marvin Minsky라고 하는 교수가 하나의 모델을 이용하여 XOR 문제를 풀 수 없다는 것을 수학적으로 증명해 버렸다. 간단한 모델로 풀 수 없음이 증명된 것이다.

Multi Layer Perceptron

이어 하나의 모델이 아닌 하나 이상의 레이어(Layer)를 갖는 MLP(Multi Layer Perceptrons, Multi Layer Neural Nets)를 이용하여 XOR 문제를 해결할 수 있음을 제시했다. 저런 모델을 여러 개 이어 붙여서 XOR을 구현할 수 있음을 제시한 것이다.

하지만 더 큰 문제는 이 여러 레이어(Layer)를 갖는 Multi Layer Perceptron을 학습시킬 방법이 없었다는 것이다. 여러 레이어에 걸쳐 연결된 Perceptron 사이의 가중치를 데이터를 통해 학습 시킬 방법이 당시에는 알려져 있지 않았다. Marvin Minsky 교수는 실망한 나머지 자신의 책을 통해 Multi Layer Perceptron을 학습 시킬 방법은 존재하지 않는다고 발표해버린다. 이 책을 읽고 많은 연구진은 Neural Network에 대한 관심을 잃게 된다.

Backpropagation

그러다가 1974년, 1982년 Paul Werbos라는 연구자와 1986년 Hinton이라는 사람에 의해 Backpropagation이라는 알고리즘이 고안되었다. 

기존 Neural Network의 큰 문제는 Input에서 Output 쪽으로 값이 전파되기 때문에 최종적으로 Output 값이 실제와 달랐을 때 앞쪽에 있었던 Layer의 가중치를 조절하기가 힘들다는데에 있었다.

Backpropagation 알고리즘의 원리는 간단하다. Forward propagation으로 예측한 결과 값이 틀린 경우, 그 에러를 다시 반대 방향으로 전파시켜가면서 가중치 W 값을 보정해나가는 개념이다.

이러한 개념을 1974년 Paul Werbos가 자신의 박사 논문에 추가했다. 이후 1982년도 다시 논문을 발표했지만 이미 식어버린 관심을 살릴 수는 없었다. 이후 Paul Werbos와는 독립적으로 Hinton이라는 사람이 1986년에 같은 개념을 소개하는 논문을 발표하게 되었고, 조금씩 사람들의 관심을 받기 시작했다.

또 LeCun이라는 교수에 의해 수행된 고양이 실험에서 특정 모양에 대해서 특정 뉴런만 반응한다는 것을 알게 되었다. 일부 신경들의 그림의 부분부분들을 담당하고 그것들이 나중에 조합되는 것이 아닐까 하는 생각을 이용해서 'Convolutional Neural Networks'라고 하는 알고리즘을 개발해냈다. 우리가 잘 알고 있는 알파고 역시 CNN 알고리즘을 사용했었다. 
 이미지의 일부분을 잘라서 입력으로 주고 나중에 다시 합치는 방법인 CNN은 글자 인식 등의 부분에서 높은 성능을 발휘했다. 인식률이 90%에 달할 정도로 높은 성능을 보여줬다. 이후 CNN 알고리즘은 자동주행 차량 연구에도 사용되었다.

학습 성능 문제

하지만 새로운 문제에 봉착했다. Backpropagation 알고리즘을 학습할 때, Neural Network의 Layer 수가 많아질수록 성능이 나빠졌다. output 쪽의 에러를 input 쪽으로 전파해야 하는데, Layer가 많아질수록 input 쪽에 있는 앞단에 에러가 전파되지 않는 문제가 생겼다.

수많은 레이어들 (출처 : http://neuralnetworksanddeeplearning.com/chapp6.html)

실제로는 모든 노드의 가중치를 적절하게 조정해야 하지만 Backpropagation으로 전파되는 에러의 흔적이 Layer를 거듭할수록 옅어져 input Layer 쪽에서는 거의 변동이 없게 되는 것이다. 실제로는 입력 쪽 Layer의 가중치가 더 중요한데 에러가 잘 전파되지 않아 성능 향상이 어려워진 것이다.

Neural Network가 이렇게 어려움을 겪고 있는 사이 다른 머신 러닝 알고리즘이 두각을 나타내기 시작했다. SVM, RandomForest 등의 알고리즘이 소개되었다. 이런 알고리즘은 Neural Network보다 간단하고 이해하기 쉬우면서 성능도 준수해서 더욱더 주목을 받을 수 있었다.

이에 1995년 CNN을 고안한 LeCun 교수조차도 SVM이나 RandomForest 같은 알고리즘이 더 간단하고 더 성능이 좋게 나온다고 말을 했다. 여기서 딥러닝의 2차 침체기가 도래했다.


'프로그래밍 > 알고리즘' 카테고리의 다른 글

정렬 알고리즘  (0) 2018.06.22
GIT 에 소스 커밋하기  (0) 2018.06.22
시간 복잡도  (0) 2018.04.21
[Codility] CountSemiprimes  (0) 2018.04.21
[Codility] cyclicRotation  (0) 2018.04.15
블로그 이미지

낭만가을

,

한화생명 리치100세연금보험

 

이보험은 공시이율형 연금보험으로써 특징적인 것은 없고 현 공시이율이 어느정도 인지를확

 

인해보시면 됩니다.

 

 

 

위표에서 보면 연금보험 설계서는 45세 남성, 연금수령방법은 개인형 100세보증,월납 50만원

 

연금개시 65세로 설정하였고,노후에 연금액이 얼마나 될지 한번 보겠습니다.

 

 

위표는 리치100세 연금보험의 연금수령형태입니다. 연금수령형태는 굉장히 다양한 편으로 장점이

 

될수 있습니다. 종신연금형,확정연금형,상속연금형 등으로 구분됩니다.

 

 

연금보험은 저축성이기는 하지만 10년이후에 비과세 혜택을 부여받기 위해서 사망시 사망보험

 

금을 지그배주고 있습니다. 피보험자 사망시 사망보험금 600만원이 지급되고 사망당시의 계

 

약자적립금을 지급합니다.

 

 

이 연금보험 납입시 고액보험료를 납입하게 되면 보험료 할인 혜택을 받게됩니다.30만원 이상

 

인 보험료에 대해서 할인을 적용해주고 있으며 30만원 초과된 금액에  대해서는 0.5% 이사의

 

보험료를 할인해주고 한 회사에 5인이상이 한화생명의 보험을 가입하면 단체취급으로 보험료

 

1%를 할인해줍니다.

 







 

연금보혐을 10년 납입하고 10년 거치 후 연금개시하도록 설계 하였습니다.

 

총 5,999만원을 납입하고 20년 되는 시점에 현 공시이율 4.4%적용시 1억 151만원 정도의

 

해지환급금이 발생합니다.최저보증이율로 계산하게 되면 7,283만원을 해지환급금으로 적용

 

받게 됩니다. 20년동안 이율이라고 봤을때 너무 터무니없는 금액이 아닐수있을겁니다.

 

 

 

한화생명리치100세보험 사업비입니다. 사업비를 10년동안 많이 받는데 이유는 나중에 평생

 

토록연금을 지급해주기 때문이며,7년 미만 11.65%.7년 이상10년 미만 9.52%, 10년 이후 2,000

 

원을 사업비로  받습니다.

 

 

추가납입은 납입액의 2배까지 가능합니다. 추가납입은 사업비를 줄이는 좋은 방법입니다.

 



출처: http://viewhelp.tistory.com/entry/한화생명리치100세연금보험 [보험트렌드]

블로그 이미지

낭만가을

,