CS

CS/기계학습심화

[기계학습심화] 12. 딥러닝 (3) - CNN

지난 글에서는 뉴럴 네트워크와 역전파에 대해 정리하였다. 뉴럴 네트워크는 기계학습에서 학습시키는 함수의 새로운 형태로, 여러 단위 함수의 중첩함수 형태이다.뉴럴 네트워크를 학습시킬 때도 로스를 구해서 로스의 값이 줄어드는 방향으로 학습시키게 되는데, 경사하강법을 사용하는 경우 미분 값이 필요하다. 여러 함수들이 합성된 뉴럴 네트워크에서 미분값을 구하기 위해, 데이터를 넣어서 전체 값을 계산하는 추론 과정과, 해당 값을 이용해서 각 레이어의 미분값을 구하는 학습 과정이 일어난다.학습 과정에서는 역전파를 통해 각 레이어의 미분값을 구해두고, 업데이트 하려는 값에 대해서만 미분값을 활용하여 경사하강법과 같은 방식으로 다음 w 값을 업데이트 한다. 이번 글에서는 CNN 에 대해서 정리해보려고 한다.사실 딥러닝..

CS/소프트웨어공학

[소프트웨어공학] 12. Configuration and Version Management

Configuration Management (CM)CM은 소프트웨어 시스템의 변화를 관리하는 도구, 프로세스, 정책과 관련된 개념이다.특히 팀 프로젝트를 하다보면 각 개발자들이 서로 다른 변화를 만들어내기 때문에 이 변화들을 관리하기 위해 필수적이다. 소프트웨어 컴포넌트의 확정된 변경사항은 버전별로 repository 라는 공동 저장소에 저장되어 있고, 개발자들은 repository 에 있는 코드를 자신의 workspace 로 가져와서 개발한다. CM 에서 수행하는 활동은 크게 4가지가 있다. 1. version management시스템 컴포넌트를 버전 별로 추적 관리하는 것 2. system building컴포넌트, 데이터, 라이브러리를 모아서 하나의 실행가능한 프로그램으로 만드는 것 3. chan..

CS/소프트웨어공학

[소프트웨어공학] 11. Use Case Diagram

Use Case Diagramuse case diagram 을 그리는 목적은 크게 2가지가 있다. 1. 시스템의 functionality (functional requirement) 를 '사용자의 관점'에서 문서화하는 것2. 사용자와 시스템 사이의 상호작용을 use case description을 사용해 문서화하는 것 이때 use case description 을 작성하면, 시스템 관점에서 어떤 기능을 개발해야 하는지 명료하게 정리된다.그러면 이 내용을 기반으로 시스템을 설계하고 구현하면 끝이다. use case diagram은 철저하게 '사용자의 관점' 에서 작성해야 한다.사용자가 로그인 화면에서 아이디와 비밀번호를 입력하고 로그인 버튼을 클릭했을 때, 시스템이 사용자 정보를 DB에서 조회하고.. 하는..

CS/기계학습심화

[기계학습심화] 11. 딥러닝 (2) - Neural Network & Back Propagation

Neural Network이제 딥러닝의 기본적인 아이디어인 인공 신경망과 역전파(back propagation) 에 대해 정리해보려고 한다.사실 딥러닝도 기존의 전통적인 기계학습과 크게 보면 다르지 않다. 전통적인 기계학습 파이프라인을 간단하게 정리해보면 데이터를 모아서 전처리하고, 해당 데이터를 인풋으로 넣었을 때 원하는 결과를 내보내는 함수를 찾기 위해 함수의 형태를 정의하고, 함수의 계수를 찾는 문제였다. 뉴럴 네트워크는 여기에서 함수의 형태만 바꾼 것이다.전통적인 기계학습에서는 간단하게 선형 함수를 사용했다면, 뉴럴 네트워크에서는 입력 데이터에 대해 리니어 매핑을 해주고, 논 리니어 매핑을 해준다. 이 결과를 다시 어떤 함수의 입력으로 넣어서 리니어 매핑하고, 논 리니어 매핑하고 내보내고, 다시..

CS/기계학습심화

[기계학습심화] 10. 딥러닝 (1) - 선형 분류 모델

Linear Classification지금까지 선형회귀, kNN, SVM, k-menas, PCA 등 지도/비지도 학습으로 회귀 및 분류 모델을 만드는 과정을 살펴보았다.이번 글에서부터는 분류 모델 중 선형 분류 모델에 대한 일반적인 이야기에서 시작하여 딥러닝에 대한 정리를 시작한다. 기계학습은 결국 입력값과 출력값이 주어졌을 때 이 둘을 잘 매핑하는 함수를 찾는 문제였다.이때 지도 학습은 입력값과 출력값을 모두 활용해서 함수를 찾고, 비지도 학습은 입력값만 가지고 함수를 찾는다는 차이가 있었다. 하지만 함수를 쌩으로 찾는 것은 쉽지 않다보니 함수의 형태를 정의하고, 그 함수식에서 비어있는 계수를 찾자는 parameteric approch가 등장했다.파라미터를 찾을 때는 Loss function 과..

CS/소프트웨어공학

[소프트웨어공학] 10. Requirement Capture

요구사항 분석 과정이번 글에서는 Software Activity 글에서 정리했던 요구사항 파악 단계를 구체적으로 정리해본다.먼저 요구사항을 파악할 때는 다음 3가지 단계를 거쳐야 한다. 1. 기존 시스템을 파악한다.2. 기존 시스템에서 문제점을 파악한다.3. 현재 시스템에 없는 새로운 요구사항이 있는지 파악한다. 요구사항을 파악할 때, 기존 시스템을 이해하는 것이 필요한 이유는 다음과 같다. - 기존 시스템에 존재하는 기능이 새로운 시스템에서도 계속 필요할 수 있다.- 기존 시스템에 존재하는 데이터를 새로운 시스템에 그대로 옮겨야 한다.- 기존 시스템의 기술 문서는 기존 시스템의 알고리즘 흐름을 자세히 파악하는데 도움이 된다.- 기존 시스템의 결함을 파악해서 새로운 시스템에는 같은 결함이 없도록 해야 한..

CS/소프트웨어공학

[소프트웨어공학] 9. Modeling Concept

지금까지 소프트웨어 공학의 중요성 및 주요 개발 프로세스 모델들의 특징과 객체 지향 개념에 대해서 정리하였다.이번 글부터는 '요구사항 분석 - 설계 - 구현 - 검증 - 유지보수' 단계에서 요구사항 분석, 설계, 검증에 대한 내용을 자세히 정리한다. 먼저 요구사항 분석에 앞서 요구사항을 분석한 내용을 기반으로 다이어그램을 그릴 필요가 있기 때문에, '모델' 과 '다이어그램' 에 대해서 간단히 정리해보려고 한다. 모델모델은 현실 또는 상상의 무언가를 표현하는 것을 말한다.이때 모델이 유용하려면 아래로 내려갈수록 디테일하게 적절히 계층적 구조로 묘사되어야 하고, 현재 task에서 중요한 부분을 잘 나타내어야 한다.지금은 소프트웨어 공학을 보고 있으므로 소프트웨어 시스템을 모델로 표현하게 되는데, 대부분의 소..

CS/기계학습심화

[기계학습심화] 9. PCA (Principal Component Analysis)

PCA비지도 학습의 일종으로 한국어로 번역하면 '주성분 분석'이라고 부른다.지금까지 정리한 내용들 중에 중요도 순위를 매기면 1, 2위를 다툴 정도로 머신러닝에서 매우 중요한 개념이다. 차원의 저주 지금까지는 데이터나 데이터들을 다루는 작업과 관련된 함수를 찾았었다.회귀는 데이터 자체와 직접 관련된 함수였고, 분류와 클러스터링은 데이터를 다루는 작업과 관련된 함수였다. 그런데 28*28 크기의 작은 흑백 이미지 데이터를 분류하려고 하면, 하나의 데이터당 28*28 = 784 개 픽셀 정보를 다루다보니 kNN같은 단순한 알고리즘에서도 동작 시간이 오래 걸렸다.게다가 흑백 이미지가 아니라 실제와 비슷한 이미지라면 rgb 값이 들어가면서 차원이 하나 더 늘어나 784 * 3 이 된다. 그래서 이렇게 실..

CS/기계학습심화

[기계학습심화] 8. K-Means

K-Means지금까지는 지도학습의 예시로 대표적인 회귀와 분류 모델의 학습 알고리즘을 정리하였다.이번 글에서는 비지도학습의 예시로 K-Means 를 정리해본다. K-means는 라벨링이 되어있지 않은 데이터들을 비슷한 특징을 가진 데이터들끼리 묶어서 라벨링하는 '클러스터링' 에 사용하는 알고리즘이다. 이때 k는 클러스터의 개수를 가리키는 하이퍼파라미터이다.K-means는 클러스터링 알고리즘으로 굉장히 간단하고 유명하면서 또 강력하다. K-Means 는 라벨이 없는 비지도학습 알고리즘이므로, K-Means 알고리즘을 적용하면 그제서야 데이터들이 어떤 클러스터에 속해있는지 라벨이 생기게 된다. 클러스터링은 이미지에 적용해서 비슷한 rgb 값을 갖고 있는 픽셀들끼리 분류할 수도 있고,의류회사의 경우 사람들..

CS/소프트웨어공학

[소프트웨어공학] 8. 객체지향 (2) - polymorphism

Polymorphism 한국어로는 '다형성' 이라고 번역되나 abstraction 과 마찬가지로 영어 단어로 봐야 그 의미가 제대로 이해된다.polymorphism 은 poly + morph + ism 의 합성어로, poly 는 '다수의' 라는 의미를 갖고 있고, morph 는 '모양' 을 가리킨다.그래서 한국어로도 다형성이라고 번역을 한 것인데, 사실 코드에서 '모양' 이라고 하면 잘 와닿지 않는다. 소스코드에서 '모양, 형태' 라는 말을 더 와닿게 번역하면 '구현' 이 된다.즉, polymorphism은 구현이 다양하게 있다는 뜻이다.이 말은 다음과 같이 표현할 수 있다. one interface, multiple implementation 말 그대로 하나의 인터페이스에 여러가지 구현이 존재할 수 있..

에버듀
'CS' 카테고리의 글 목록