'deep learning'에 해당되는 글 4건

  1. 2017/07/11 용비 05. Example : Feedforward Networks - Multiple Linear Regression
  2. 2017/05/11 용비 04. Key Concepts of Deep Neural Networks
  3. 2017/04/29 용비 02. A Few Concrete Examples
  4. 2017/04/29 용비 01. Neural Network Definition
Example: Feedforward Networks
(예제 : 전방향 네트워크)

신경망을 사용하는데 있어서 우리의 목표는 가능한 빨리 오류를 최소화하는 지점에 도달하는 것이다. 우리는 트랙을 도는 경주를 하고 있는 중이고, 둥그런 고리의 같은 지점을 반복해서 지나고 있다. 경주의 시작 라인은 우리의 가중치가 초기화되는 상태이고, 결승 라인은 파라미터들이 정확한 분류와 예측을 할 수 있을 때의 상태이다.

경주 자체는 여러 단계를 포함하고 있고, 각 단계는 전후 단계가 유사하다. 달리기 주자처럼, 우리는 반복되는 행동을 되풀이하여 목표에 도달하게 될 것이다. 신경망에 대한 각 단계는 추측, 오류 측정, 계수를 증가시키는 수정과 같은 약간의 업데이트를 포함한다.

가중치의 모음은, 시작이나 끝의 상태와는 상관없이, 데이터 구조를 파악하기 위해 지상 검증 자료(ground-truth) 레이블과 데이터 모델 관계를 맺으려고 하기 때문에 모델이라고도 불린다. 모델은 일반적으로 나쁘게 시작해서 신경망이 변수들을 업데이트 하기 때문에 시간이 지남에 따라 결국 덜 나빠진다.

그 이유는 신경망이 무지에서 태어났기 때문이다. 신경망은 올바른 추측을 하기 위해 어느 가중치와 편향이 입력값을 가장 잘 변환하는지를 알지 못한다. 추측에서 시작해야만 하고, 실수에서 배움으로 점차적으로 더 좋은 추측을 시도하게 된다.(여러분은 신경망을 가설을 테스트하고, 다시 시도하는 과학적 방법의 아주 작은 실행으로 생각할 수 있다. 단지 눈가리개를 가지고 하는 과학적 방법일 뿐이다.)

여기 전방향 신경망을 통해 배우는 동안 무슨 일이 일어나는지에 대한 간단한 설명이 있다. 그것을 설명하기 위한 가장 간단한 아키텍처이다.

입력값이 네트워크로 들어간다. 계수나 가중치는 입력값을 네트워크가 마지막에 만들어 놓은 추측값들의 집합에 맵핑한다.

input(입력값) * weight(가중치) = guess(추측값)

가중치가 적용된 입력값은 그 입력값이 무엇인지 추측한 결과이다. 그런 다음 신경은 추측값을 받아서 데이터에 대한 지상 근거 자료(ground-truth)와 비교하고, 전문가에게 효율적으로 "제가 제대로 했나요?"하고 묻는다.

ground truth - guess = error

네트워크의 추측값과 지상 근거 자료(ground-truth)의 차이는 오류이다. 네트워크는 오류를 측정하고, 오류에 기여한 정도에 따라 가중치를 조정하여 모델에 반영하여 오류를 없앤다.

error(오류) * weight's contribution to error(가중치의 오류 기여도) = adjustment(조정값)

위의 3가지 의사 수학 공식은 3단계의 프로세스를 다시 시작하기 위한 신경망의 세가지 주요 기능(입력값 점수 산정:scoring input, 손실 계산:calculating loss, 모델 업데이트 적용:applying an update to the model)을 설명하고 있다. 신경망은 올바른 추측값을 지원하는 가중치를 보상히고, 오류를 이끌어 내는 가중치를 처벌하는 올바른 피드백 고리이다.

위의 첫번째 단계를 더 깊이 들어가 보자.

Multiple Linear Regression
(다중 선형 회귀)

생물학적으로 영감을 얻은 이름에도 불구하고, 인공신경망은 다른 머신러닝 알고리즘처럼 수학과 코드에 불과하다. 사실은, 통계학에서 배우는 첫번째 방법 중 하나인 선형 회귀를 이해하는 누구라도, 신경망이 어떻게 동작하는지를 이해할 수 있다. 가장 간단한 형태로, 선형 회귀는 다음과 같이 표현된다.

Y_hat = bX + a

여기서 Y_hat은 추정된 출력값이고, X는 입력값, b는 기울기, a는 2차원 그래프에서 수직 축에 대한 절편이다.(이것을 더 구체적으로 하자면, X는 방사선 피폭, Y는 암 위험도가 될 수 있다. 또는 X는 매일 하는 엎드려 팔굽혀펴기, Y는 벤치프레스-벤치에 누워 역기 들어올리는 운동- 총무게일 수 있다. 또는 X는 비료의 양, Y는 농작물의 크기일 수도 있다.) X축에서 얼마나 멀리 떨어져 있는지에 상관없이, X에 단위를 추가할 때마다, 종속 변수 Y는 비례하여 커진다는 것을 상상할 수 있다. 서로 위 아래로 움직이는 2개의 변수 사이의 단순한 관계가 시작점이다.

다음 단계는 여러 개의 입력값으로 출력값을 생성하는 다중 선형 회귀를 생각해 보는 것이다. 일반적으로 다음과 같이 표현된다.

Y_hat = b_1*X_1 + b_2*X_2 + b_3*X_3 + a

(위의 수확량 예제를 확장하기 위해서, 비료 변수에 성장기의 햇빛의 양과 강우량을 추가하고, 3가지 모두 Y_hat에 영향을 줄 수 있다.)

이제 다중 선형 회귀의 형태가 신경망의 모든 노드에서 발생한다. 단일 계층의 각 노드에서, 이전 계층의 각 노드로부터의 입력은 모든 다른 노드의 입력값과 재결합된다. 즉, 입력값들이 각자의 계수에 따라 다른 비율로 섞이고, 후속 계층의 각 노드로 다르게 이어진다. 이러한 방식으로, 망에서 오류를 줄이기 위해서 입력의 조합이 중요하다는 것에 대한 테스트를 수행한다.

노드의 입력값들을 합해서 Y_hat에 도달하면, 비선형 함수를 통과하게 된다. 이유는 여기에 있다 : 만약 모든 노드가 단지 다중 선형 회귀를 수행한다면, Y_hat은 선형으로 증가하고 X의 증가에 따른 제한이 없다. 그러나, 그것은 우리의 목적에 부합하지 않는다.

각 노드에서 우리가 만들고자 하는 것은 입력 신호가 통과하여 궁극적으로 네트워크의 결정에 영향을 미치는지의 여부에 따라 켜지고 꺼지는 스위치(뉴런과 같은...)이다.

스위치가 있을 때, 분류 문제가 있다. 입력 신호가 노드가 충분히 분류했는지 아닌지, On인지 Off인지를 지시하는가? 2진 결정은 1과 0으로 표현될 수 있다. 그리고 로지스틱 회귀는 0과 1사이의 공간으로 변형하기 위해 입력값을 축소하여 밀어넣는 비선형 함수이다.

각 노드에서 비선형 변환은 일반적으로 로지스틱 회귀와 유사한 s-shaped 함수들이다. 그 함수들은 sigmoid(그리스어 단어 "S"), tanh, hard tanh 등으로 가고, 각 노드의 출력값을 형성한다. 0과 1사이의 s-shaped 공간에 각각 밀어넣어진 모든 노드의 출력값은 전방향 신경망에서 다음 레이어의 입력값으로 전달되고, 신호가 결정이 내려지는 네트워크의 마지막 레이어에 도달할 때까지 계속된다.
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/790

Key Concepts of Deep Neural Networks
(Deep Neural Network의 핵심 개념)

Deep-Learning Network는 흔히 있는 단일 은닉 레이어(single hidden layer)와는 깊이에서 구별된다. 즉, 패턴 인식의 여러 과정에서 데이터가 통과하는 노드 레이어의 숫자에서 구별된다.

전통적인 머신러닝에서는 하나의 입력과 하나의 출력, 그 사이의 최소한 하나의 숨겨진 레이어로 이루어진 얕은 그물망을 사용한다. 3개 이상의 레이어(입력과 출력을 포함하여)는 "Deep" Learning의 자격을 갖는다.따라서, deep은 하나 이상의 숨겨진 레이어를 의미하는 엄격하게 정의된 기술적인 용어이다.

Deep-Learning 네트워크에서, 노드의 각 레이어는 이전 레이어의 출력값을 근거로 고유한 일련의 특징을 학습한다. 신경망(neural net)으로 진화할수록 노드에서는 더 복잡한 특징들을 인식할 수 있고, 앞의 레이어로부터 특징들을 취합하여 재조합할 수 있다.


사용자 삽입 이미지

이것은 복잡도와 추상성이 증가하는 계층 구조인 Feature Hierarchy(특징 계층)이라고 알려져 있다. 이것을 통해 deep-learning network는 비선형 함수를 통과하는 수십억개의 파라미터를 가진 매우 크고, 고차원의 데이터들을 처리할 수 있다.

무엇보다도, 이러한 그물망은 세상에 압도적으로 존재하는 라벨이 붙여지지 않고, 구조화되어 있지 않은 데이터내에 잠재되어 있는 구조를 발견할 수 있다. 구조화되어 있지 않은 데이터는 다른 말로 하면, 사진, 텍스트, 비디오, 오디오와 같은 원시 미디어이다. 그러므로, deep learning으로 가장 잘 해결할 수 있는 문제점 중 하나는 세상에 있는 원시 미디어, 라벨이 붙여져 있지 않은 미디어를 처리하고 클러스터링하여, 관계형 데이터베이스 내에 있는 사람이 구성하지 않은 데이터에 대한 유사성과 이상을 식별하거나 이름을 붙이는 것이다.

예를 들어, deep learning은 수백만 개의 이미지를 가지고 한 귀퉁이의 고양이, 다른 모퉁이의 고양이, 모든 할머니 사진들 중에 3분의 1 정도의 유사성에 따라 클러스터를 구성할 수 있다. 이것은 소위 스마트 포토 앨범의 기반이 된다.

이제 같은 아이디어를 다른 데이터 타입에 적용해 보자. Deep learning은 이메일이나 뉴스 기사와 같은 원시 텍스트를 클러스터링할 수 있다. (cluser:조밀하게 모아서 무리 짓는 것) 벡터 공간의 한쪽 귀퉁이에 짜증내는 불평으로 가득찬 이메을을 모아놓고, 다른 편에는 만족하는 고객들 혹은 스팸봇이 보낸 메시지들을 모아놓을 수 있다. 이것은 다양한 메시지 필터의 기본이다. 그리고 CRM(Customer Relationship Management)에서 사용될 수 있다. 음성 메시지에도 동일하게 적용된다. 시간에 따라서 데이터는 정상적이고 건강한 행동과 비정상적이고 위험한 행동 중심으로 데이터를 모을 수 있다. 시간에 따른 데이터가 스마트폰에서 생성된다면, 사용자의 건강과 습관에 대한 insight(통찰)를 제공해 줄 것이다. 데이터가 자동차부품(autopart)에서 생성된다면, 치명적인 고장을 예방하는데 사용될 수 있다.

Deep-learning network는 대부분의 전통적인 머신러닝 알고리즘과는 다르게 사람의 개입없이 자동으로 특징을 추출한다. 주어진 특징 추출은 데이터 사이언티스트들이 수년에 걸쳐 이루어낼 수 있는 작업이므로, deep learning은 전문가 수가 제한되어 있다는 애로 사항을 회피할 수 있는 방법이다. 근본적으로 확장하지 않고도, 규모가 작은 데이터 사이언스 팀의 능력을 보강할 수 있다.

라벨이 붙여지지 않은 데이터로 학습하는 경우, deep network내의 각 노드 레이어는 샘플에서 뽑아낸 입력 데이터를 반복적으로 재구성하도록 시도하고, 네트워크의 추측과 입력 데이터 자체의 확률 분포 사이의 차이를 최소화하려고 함으로써 자동으로 특징을 학습한다. 예를 들면, 제한된 볼츠만 머신(Boltzmann Machine)은 이러한 방식으로 소위 재구성 데이터를 생성한다.

이 과정에서, 이러한 네트워크는 어떤 관련있는 특징들과 최적의 결과 사이에 상관관계를 인식하는 학습을 한다. 네트워크는 전체적으로 재구성되었든지, 라벨이 붙여진 데이터든지 상관없이, 특징을 가진 신호와 그런 특징들이 설명하는 것 사이를 연결한다.

라벨이 붙여진 데이터(분류된 데이터)로 학습한 Deep-learning network는 비정형 데이터에도 적용될 수 있기 때문에 머신러닝 보다 훨씬 더 많은 입력 데이터에 접근할 수 있다. 고성능을 위한 방법이다. 더 많은 데이터를 학습할수록, 더 정확해질 것이다. (많은 데이터로 학습한 적합하지 않은 알고리즘은 적은 데이터로 학습한 훌륭한 알로리즘보다 더 나은 결과를 낼 수 있다.) 라벨이 붙어 있지 않은 막대한 양의 데이터를 처리하고 학습한 deep-learning의 능력은 이전 알고리즘에 비해 차별화된 이점을 제공한다.

Deep-learning network는 출력 레이어에서 종료된다 : 특정 결과나 라벨에 가능성을 지정하는 기호(logistic), softmax(??), 분류사(classifier:어떤 의미 그룹에 속하는지를 보여주는 접사나 단어) 우리는 이것을 예측적이다라고 하지만, 포괄적인 의미에서의 예측을 의미한다. 예를 들어, 이미지형태로 원시 데이터가 주어진다면, deep-learning network는 입력데이터가 90%로 사람을 나타낸다고 결정할 수 있다.
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/789

02 A Few Concrete Examples
(몇 가지 구체적인 예제)

Deep Learning은 입력값과 출력값을 맵핑한다. Deep Learning은 상관 관계를 찾는다. 그것은 "Universal Approximator"(보편적인 근사)라고 알려져 있다. 왜냐하면 입력값 x와 출력값 y가 상관 관계나 인과 관계가 있다고 가정할 때, 함수 f(x)=y의 근사치를 계산하는 것을 배울 수 있기 때문이다. 학습 과정에서, 신경망은 f(x)=3x+12인지 f(x)=9x-0.1인지에 상관없이 올바른 f를 찾거나 정확한 방식으로 x를 y로 변환한다. Deep Learning이 무엇을 할 수 있는지 여기 몇가지 예제가 있다.

1. Classification
(분류)

모든 분류 작업은 라벨이 붙여진 데이터셋에 달려 있다. 그것은 곧 사람은 신경망이 라벨과 데이터 사이의 상관 관계를 배우도록 지식을 데이터셋으로 변환해야 한다는 것을 의미한다. 이것을 Supervised Learning(감독 학습)이라고 한다.

  - 얼굴을 감지하고, 이미지에서 사람들을 식별하고, 얼굴 표정을 인식한다. (화가 났는지, 즐거운지)
  - 비디오에서 행동 인식한다.
  - 음성을 감지하고, 화자를 식별하고, 음성을 텍스트로 바꾸고, 음성에서 감정을 인식한다.
  - 텍스트를 스팸(이메일에서)이나 사기(보험 청구에서)로 분류하고 텍스트에서 감정을 인식한다. (고객 피드백)

사람이 만들 수 있는 어떤 라벨이나 관심을 가지고 있는 어떠한 결과, 데이터와 상관 관계가 있는 어떤 라벨이라도 신경망 훈련에 사용할 수 있다.

2. Clustering
(클러스터링)

클러스터링이나 그룹핑은 유사성을 감지한다. Deep Learning은 유사성을 감지하기 위해 라벨을 붙이도록 요구하지 않는다. 라벨을 붙이지 않은 Learning은 "Unsupervised Learning"(감독되지 않는 학습)이라고 한다. 라벨이 붙어 있지 않은 데이터는 전 세계 대부분의 데이터이다. 머신 러닝의 한가지 원칙은 더 많은 데이터로 알고리즘이 학습할수록, 더 정확해질 것이라는 것이다. 그러므로, unsupervised learning은 굉장히 정확한 모델을 생성할 수 있는 잠재력이 있다.

  - 검색 : 유사한 아이템을 나타내기 위하여 문서나 이미지, 사운드를 비교한다.
  - 이상 탐지 : 유사성 탐지와는 반대로 이상 현상이나 비정상적인 행위를 탐지하는 것이다. 많은 경우에, 비정상적인 행위는 사기와 같이 탐지하고 방지하기 원하는 것과 높은 상관 관계가 있다.

3. Predictive Analytics
(예측 분석)

말하자면, 분류를 통해서 deep learning은 이미지의 픽셀과 사람의 이름 사이의 상관 관계를 설정할 수 있다. 이것을 정적 예측이라고 부를 수 있다. 동일한 토큰으로, 충분한 올바른 데이터에 노출된다면 deep learning은 현재 이벤트와 미래 이벤트 사이의 상관 관계를 설정할 수 있다. 미래 이벤트는 감각에 라벨을 붙이는 것과 같다. Deep learning은 시간이나 어떤 일이 아직 발생하지 않았다는 사실을 반드시 고려하지는 않는다. 주어진 일련의 시간 동안, deep learning은 숫자열을 읽고, 다음에 발생할 것 같은 최적의 숫자를 예측한다.

  - 하드웨어 고장 : 데이터 센터, 제조, 운송
  - 건강 이상 : 뇌졸중, 생체 통계와 웨어러블 데이터 기반 심장 마비
  - 고객 변동(churn:서비스 제공자를 바꾸는 고객) : 웹 활동이나 메타데이터에 근거한 고객이 떠날 가능성 예측
  - 직원 이직율 : 위와 동일하지만, 직원용으로

더 잘 예측할수록, 더 잘 예방하고 미연에 방지할 수 있다. 보는 것과 같이, 신경망을 가지고 우리는 더 적은 놀라움의 세상을 향해 움직일 수 있다. Zero가 아닌 단지 미미하게 더 적은 놀라움의 세상으로.

Deep Learning Use Case에 대한 간략한 Overview를 통해서, 신경망이 무엇으로 이루어져 있는지를 살펴보자.
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/787


more..



01. Neural Network Definition
(신경망의 정의)

신경망은 패턴을 인식하도록 디자인된 사람의 뇌를 본떠 느슨하게 모델링된 일련의 알고리즘이다. 신경망은 기계 인식, 원시 입력값을 라벨링하거나 클러스터링하는 것을 통해 감각 데이터를 해석한다. 신경망이 인식한 패턴들은 모든 실제 세상의 데이터-이미지, 사운드, 텍스트, 시간 계열-가 번역되어 벡터에 포함된 수치들이다.

신경망은 클러스터링하고 분류하는데 도움을 준다. 신경망은 저장하고 관리하는 데이터 위에서 클러스터링하고 분류하는 계층으로 생각할 수 있다. 신경망은 예제로 입력하는 값들 사이의 유사성에 따라 라벨이 붙어 있지 않은 데이터를 그룹하는데 도움을 준다. 그리고, 라벨이 붙여진 데이터를 가지고 있다면 분류하여 훈련할 수 있다. (더 정확하게 이야기하면, 신경망은 클러스터링하고 분류하기 위해 다른 알고리즘에 있는 기능들을 추출한다. 따라서 심층 신경망(Deep Neural Networks)은 강화 학습, 분류 및 회귀 알고리즘을 포함한 더 커다란 머신러닝 어플리케이션의 컴포넌트로 생각할 수 있다.)

Deep Learning(심화 학습)으로 풀 수 있는 문제들은 무엇이 있으며, 더 중요한 것은 Deep Learning으로 여러분의 어떤 문제들을 해결할 수 있는가? 그에 대한 답을 알기 위해서는 스스로에게 몇 가지 질문을 해볼 필요가 있다. 내가 관심을 가지고 있는 결과는 무엇인가? 그런 결과들은 데이터로 적용될 수 있는 라벨들이다. 예를 들면, 이메일 필터의 스팸인지 아닌지, 사기 탐지의 좋은 사람인지 나쁜 사람인지, 고객 관계 관리(CRM)상에서의 화난 고객인지, 행복한 고객인지. 그런 다음 물어보라. 이 라벨에 동반되는 데이터를 가지고 있는가? 곧, 라벨이 붙여진 데이터를 찾을 수 있는가? 또는 라벨과 입력값 사이의 상관 관계를 알고리즘에 가르쳐 주기 위해 스팸이라는 라벨이 붙여진 스팸과 같이 라벨이 붙여진 데이터들(Mechanical Turk이나 Crowdflower와 같은 서비스를 사용하여)을 만들 수 있는가?

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/786