728x90

ref : arxiv.org/abs/1311.2901

 

Visualizing and Understanding Convolutional Networks

Matthew D. Zeiler Dept. of Computer Science, Courant Institute, New York University

 Thu, 28 Nov 2013 

 

 

합성곱 신경망의 시각화와 이해

 

요약

- 이미지넷 밴치마크에서 분류성능이 좋은 합성곱 신경망 모델들이 많아짐

- 왜 이렇게 성능이 좋고, 개선되는지 잘 몰라서 연구

- 중간 특징 계층과 분류기 동작을 시각화하여 영감을 얻음

   -> 이 방법으로 Krizhevsky보다 좋은 모델을 만듬

- 모델 계층 하나를 없애면서 성능 변화를 살펴보기도 하고, 다른 데이터셋에서도 잘 동작하는걸 확인함.

 

 

 

 

 

소개

- 일찍이 LeCun(1989)이 소개했을때부터 손글씨, 얼굴 인식에 합성곱 신경망이 좋은 성능을 보임

- 작년(2012)년에 7논문이 좋은 분류 성능이 좋았는데, 그 중 Krizhevsky께 가장 좋았음.

   * 2012년 이미지넷 분류 벤처마크에서 2등의 에러율이 26.1%인데 16.4% 에러율이 남.

 - Hinton에 따르면 1. 큰 훈련 데이터 셋, 2. 좋은 GPU 성능, 3. 새로운 정규화 기법이 성능 개선의 요인이라고 한다.

 

 

  하지만 여전히 내부 동작에 대해서는 잘 모르고, 어떻게 좋은 성능이 나오는지는 잘 몰라서 답답하다. 동작 원리를 모르고서는 시행 착오 때문에 더 나은 모델이 나오기는 힘들어질것 같다. 이 논문에서는 입력이 어떻게 신경망의 피처 맵을 자극, 영향을 주는지 시각화해서 보여 주고자한다. 이 덕분에 훈련되는 과정에 특징들이 어떻게 변화되는지 볼수 있었고, 모델에 존재하는 잠재적인 문제들을 분석해볼수 있었다.

 우리가 제안한 시각화 방법을 특징 활성이 입력 픽셀로 역방향으로 가도록 하기 위해 다층 디컨벌루션 신경망에 사용했다. 입력 이미지에 따라 분류기 출력이 얼마나 민감한지 분석하였는데, 이미지의 일부분이 분류에 중요하다는 사실을 알 수 있었다. 이런 방법들로 Krizhevsky보다 더 나은 모델을 만들어서 이미지넷에서 좋은 결과를 보였다.

 

 

관련 연구

 신경망에대해 이해하기 위해서 특징을 시각화하는건 어려운 문제. 픽셀 공간으로 사영이 쉬운 1층을 제외하구요.  계층이 깊어 질수록 더 어려워지며, 변화를 이해하기가 힘들어 집니다. 이미지 공간 상에서 신경이 최대로 활성하는 경사 하강을 수행하여 최적의 신경을 찾았습니다. 이때 신경들을 잘 초기화하고 불변성에 대한 다른 정보를 주어서는 안됩니다. 후에 나온 연구에선 어떻게 불변성에 대한 정보가 주어진 신경의 헤시안이 수치적으로 최적과 반대되도록 계산하는것을 보여주며, 불변성에 대해 잘 고려해보아야 합니다. 이 문제는 고층으로 갈수록 불변성이 매우 복잡하고, 단순 이차 근사만으로는 확인하기가 어려워 집니다.

 우리의 방법은 불변성에 대한 비모수적인 관점에서 보는게 아니라 훈련 집합이 활성시키는 특징 지도의 패턴을 보여주고자 합니다. Donahue은 모델의 고층 레이어에서 강한 활성을 시키는 패치들을 시각화하여 보여주었습니다. 하지만 우리는 입력 이미지의 조각 만이 아니라 여러 개의 구조물과 각각의 패치들을 탑다운으로 사영하면서 보여주고있습니다.

 

 

 

접근 방법

 기본적으로 LeCun과 Krizhevsky의  합성곱 신경망 모델을 사용.

이 모델들은 2차원 이미지 x_i를 입력으로 받으며 각 층의 출력은 확률 벡터 hat{y_i} 이고, 클래스는 C개가 있음.

-> 그림 3이 우리가 쓴 모델

 

 

그림 3. 8계층 레이어 합성곱 신경망 모델. 이미지(3색)를 224 x 224 조각을 내서 입력으로 받음.

1층 : 96개의 필터(빨강)로 합성곱 연산, 각 필터는 7 x 7 크기, 스트라이드는 2

   1) relu 함수를 통과,

   2) 3x 3 맥스 풀링. 스트라이드 2

   3) 55 x 55의 96개의 특징 지도(정규화된)

2, 3, 4, 5도 비슷하게 동작. 마지막 2개의 계층은 완전연결. 6 x 6 x 256 =9216차원을 입력백터로

마지막 계층은 C개 분류를 위한 소프트맥스 함수. (모든 필터와 특징은 정방 형태)

 

 

 N 개의 라벨 이미지로 학습. -> y_i는 진짜 클래스 

이미지 분류에 적합한  교차 엔트로피 비용 함수 사용( y_i와 hat{y_i})

신경망은 역전파로 학습했고, 파라미터들을 호가률적 경사 하강으로 갱신.

 

 

2.1 디컨브넷 시각화

 합성곱 신경망 동작을 이해하기 위해서는 중간 계층들의 특징들 변화를 해석해야함.

 우리가 제안하는 방법 : 특징 변화를 입력 픽셀 공간으로 사상하여 특징 맵의 변화를 입력 패턴으로 보여줌.

 디컨브넷은 합성곱 신경망 모델을 역으로 만든거라 생각할수 있는데,(이미지를 특징으로 맵핑이아니라 반대로)

 우리가 제안한 디컨브넷(2011)에서는 비지도 학습을 함.

* Adaptive deconvolutional networks for mid and high level feature learning.

 

 컨브넷을 살펴보기위해, 그림 1의 위처럼 디컨브넷을 각 레이어에 연결함. 

   -> 결과를 이미지 픽셀을 되돌려줌.

 시작하여 입력 이미지를 컨브넷에 주고, 각 레이어마다 피처들이 계산됨.

 컨브넷 활성을 보기 위해서 다른 활성함수들을 0으로 설정하고, 특징 맵을 부착된 디컨브넷 레이어에 입력으로 줌

  1. 언풀, 2. 개정 , 3. 필터링 과정으로 복원 시킴.  이 과정은 입력 픽셀 공간에 도달할떄까지 반복

 

그림 1

위 : 컨브넷 계층(오른쪽)과 연결된 디컨브넷 계층(왼쪽) 

  - 디컨브넷은 컨브넷 피쳐들을 재구성 할것임.

아래 : 전환을 통한 디컨브넷에서의 언풀링. 전환 당시 각 풀링 영역에서 지역 최대치의 위치를 기록.

 

 

언풀링

- 컨브넷에서 맥스 풀링 연산은 역행할수는 없었음.

- 전환(스위치) 변수 집합에 각 풀링 영역의 최대지점 위치를 기록해놓으면, 근사적으로 역행시킬순 있음.

- 디컨브넷에서 이러한 전환을 통해 언풀링을 수행해서 레이어를 복원시킬 수 있음.(그림 1 아래것 처럼)

 

개정

 - 컨브넷은 렐루 함수의 비선형성을 사용하는데, 특징 맵이 항상 양의 값을 갖도록 고쳐주기 때문.

 - 올바른 특징 복원 결과물을 얻기위해 relu 함수를 사용

 

필터링

- 컨브넷은 이전 층으로부터 특징 맵을 컨볼루션시킨 학습된 필터를 사용.

- 이를 역행하기위해서 디컨브넷은 전치된 필터를 사용.(대상은 relu 함수 적용된 맵에, 레이어 출력 x)

 

 높은 층에서 아래로 사영하면서, 최대 풀링 당시 전환 설정을 사용.

이 전환 설정들은 주어진 입력 이미지에 대한 것으로 , 한 활성으로부터 얻은 복원물은 원본 이미지의 일부를 닮음

 

 

3. 훈련 상세 사항

 

- 우리의 컨브넷은 그림 3과 비슷하지만 다른점은 3, 4, 5계층에서 우리 모델을 연결시킴

- 또 다른건 1, 2 레이어는 4.1에서 설명할것이고 그림 6에서 볼수 있음.

 

 이 모델은 이미지넷 2012 훈련 셋을 사용. 

 이미지 256 x 256으로 축소. 코너, 센터 10씩 잘라서 224 x 224 이미지 만듬.

 128미니배치 사이즈로 확률적 경사 하강법 사용하여 파라미터 갱신. 학습률은 0.01, 모맨텀항은 0.9

 0.5 레이트로 6,7계층에 드롭아웃 함. 모든 가중치들은 0.01로 초기화, 평향은 0으로 설정

 

 

훈련후 첫번제 레이어 필터 시각화한 결과는 그림 6.(a)에서 볼 수 있음.

소수의 특징이 좌우하고 있으므로, 각 필터를 재정규화함. 

70에폭 훈련 후 중지함. GTX580으로 12일이 걸림.

 

그림 6. (a) 1번째 레이어로 특징 스케일 클리핑을 하지않은 특징들.

(b) Krizhevsky의 1층 

(c) : 우리 모델의 1층 특징들. 스트라이드 ( 2, 4), 필터 사이즈 (7x7, 11x11) 작을 수록 특징들이 더 명확하고, 죽은 특징이 적었음.

(d) :Krizhevsky의 2층 특징들

(e) : 우리 모델 2층 특징들. 앨리어싱도 없이, 더 깨끗하고 보기좋음.

 

 

 

4. 컨브넷 시각화

 3장에서 설명한 모델로 특징 활성을 보여주기위해 디컨브넷을 사용하겠음.

 

특징 시각화

 그림 2는 훈련된 모델로 특징을 시각화한 걸 보여주고있음.

주어진 특징 지도에 대한 가장 강한 활성을 보여주기 보다는, top 9개를 보여주고 있음.

픽셀 공간으로 사영시킨 것을 보면, 여러 가지 형태로도 해당 특징 맵을 만들수 있는 것을 알 수 있고,

입력이 변형되더라도 불변함을 알 수 있음

 게다가 특징 활성에 해당한느 이미지를 같이 보여주고 있는데,

각 패치가 초점을 맞추는 판별 구조에 따라 여려 변형이 나올 수 있습니다.

예를들어  5 레이어의 1행 2열의 패치들을 보면 공통점이 없어보이는데, 시각화를 해본 결과 특징지도가 앞에있는 물체가 아닌 뒤에있는 잔디에 초점을 맞추었음을 알 우 있따.

 

 

그림 2. 완전 훈련 모델의 특징 시각화.

2-5 레이어는 

 

특징 지도의 일부분 중에서 가장 좋은경우 9개씩 보여주고 있음, 디컨볼루션 신경망 방법으로 픽셀 공산으로 사영시킴

우리 방법은 모델에서 샘플링뿐만이아니라 특징 지도상에 강한 활성을 시키는 이미지들에 대한 패턴으로 복원 시킴.

각 특징 지도에 대해 이에 대응되는이미지 패치들도 같이 보여줌.

 

 

 

 

 

정리

 

많은 합성곱 신경망 모델들을 다양한 방법으로 살펴보았습니다.

첫째, 모델의 활성을 시각화하는 방법을 소개했으며, 특징들이 해석할수 없는 특징들이 아니라 층이 올라갈수록 클래스를 판별할수 있는 성질들을 이 나타나는것을 확인하였습니다.  그리고 시각화로  모델이 더 나은 성능을 얻을수 있도록 고칠수 있는지 문제를 찾는데 사용할 수 있었습니다. 

 

 

 

 

 

 

--------------

 

으아ㅏㅏㅏ

 

전부터 논문 정리해야지 싶었는데

 

부족한 영어 실력으로 시간만 오래걸리고 제대로 해석하지도 못했다.

 

계속하기는 질리고

 

 

일단 대강 내용을 정리하면

 

이 논문 저자는

 

 

합성곱 신경망의 필터(특징 맵)을 시각화 하는 방법을 고안해냈는데,

 

이 방법으로 2012년 우승자 모델의 문제점을 찾아내고, 분류 성능을 개선해 내었다고 한다.

 

파스칼, 칼텍 데이터셋으로 훈련해서도 사용해보고 만든 모델이 성능이 더 잘나왔다. 

 

 

특징 시각화 하는 방법으로

 

8계층 합성곱 신경망의 2, 3, 4계층에 디컨브넷을 붙였는데,

 

언 풀링 -> relu -> 컨볼루션(전치) 연산으로, 컨브넷 레이어의 피처맵을 픽셀 맵으로 복원시킨다는것같다.

 

 

어떻게 경쟁자 모델을 개선시켰는지 부분도 안보고

 

 

논문좀 잘 볼줄 알아야 하긴 하는데 어렵네 ㅋㅋㅋ

 

 

 

 

내일 마저 정리해봐야겟다.

 

 

 

300x250

'그외 > 논문' 카테고리의 다른 글

물체 인식을 위한 선택적 탐색  (0) 2020.11.19
중, 고 레벨 특징 학습을 위한 적응적 디컨볼루션 신경망  (0) 2020.11.18
ORB-SLAM 대강  (0) 2020.08.16
ORB SLAM 개요  (0) 2020.08.16
논문 정리  (0) 2020.08.16
728x90

 

일반적인 분산 파일 시스템 

- 마스터 노드 : 관리자 (1대)

- 스레이브 노드 : 실제 데이터 분산 저장 (여러대). 분산 상태를 마스터가 관리

 

하둡 분산 파일 시스템 HDFS

- 네임 노드(마스터 노드) : 슬레이브 노드 동작, 메타데이터 실시간 관리

- 데이터 노드(슬레이브 노드) : 하나의 데이터 블록을 몇 대의 데이터 노드가 복제하여 보관(잃어버리지 않도록)

- 신뢰성과 고장감내성

 

 

하둡과 맵리듀스 구조

 

http://www.incodom.kr/hadoop_%EC%B4%9D%EC%A0%95%EB%A6%AC

 

HDFS 특징

- 한 블록의 크기가 크게 설정되어 큰 데이터를 한번에 가져올수있도록 설계

- 데이터 일괄 처리에 최적화 <- 수집된 데이터를 수정할 필요가 없기 때문

 

 

HDFS 상에서의 데이터 분석 프레임 워크

- 데이터 중심 프로그래밍 모형 : 작업 분할, 스케줄링, 네트워크 구성 등은 플랫폼 차원에서 수행하여 단순화 됨

- 프로그래머는 맵/리듀스 함수만을 작성 : 데이터 노드에서 실행(데이터 전송 최소화 - 일괄처리)

 

 

맵리듀스 프로그래밍 모형

- 맵함수 : 입력 <키. 값>을 새로운 <키, 값>으로 변환

- 리듀스 함수 : 시스템이 수집한 < 키, (값, ... )>을  다시 <키, 값>으로 변환하여 HDFS에 저장

- 중간 과정은 하둡 시스템이 해결

 

 

 

맵리듀스 프로그래밍 예제

- 여러 문서에 등장하는 단어 수 새기

- 맵 : <단어1, 1>, <단어2, 1>, . . .. .

- ( 중간 과정 : <단어1, (1, 1, 1,  . . .)>  )

- 리듀스 : <단어1, 1+1+1+1+ . . .>, . . .

 

map(key:document, value:text){

  for word in tokenize(value)

      emit(word, 1)

}

 

reduce(key:word, value: list of 1s){

    emit(key, sum(value))

}

 

https://dzone.com/articles/word-count-hello-word-program-in-mapreduce

 

 

 

단어 세기를 맵리듀스로 하는 이유

- 문서가 10억개고, 문서 하나당 100kb시 -> 전체 용량은 100TB(빅데이터)

- 하나의 디스크에 저장 불가능 (분산 파일 시스템)

- 100MB/초 컴퓨터 1대로 순차 처리시 12일 소요

- 1000대로 처리시 17분(분산 처리)

 

 

 

 

 

컴바인 함수

- 노드간 데이터 전송을 최소화하기 위함. 중간 과정 제어

- 맵 작업과 같은 데이터 노드에서 실행.

 

 

 

 

맵리듀스 프로그램 개발 편의를 위한 설정들

- 환전 분산 모드 : 여러대 서버로 구성. 개인 구성 힘듬

- 의사 분산 모드  : 한대의 컴퓨터에서 완전 분산 모드 흉내 HDFS

- 도자 모드 : 의사 분산 모드에서 로컬 파일 시스템 사용

 

 

 

R로 맵리듀스 프로그래밍

- rhdfs로 R에서 접근가능 : to.dfs(), from.dfs()

- rmr로 R에서 맵리듀스 함수 작성, 프로그램 실행

 

 

 

R과 빅데이터 결합

- 비분산 저장, 처리기술 -> 빅메모리, 빅애널리틱스

- 분산 저장, 처리 기술 -> 하둡

 

300x250
728x90

데이터

- 정형 데이터 : 형태가 고정된 데이터. 데이터베이스 테이블

 -> 데이터베이스 관리 시스템 DBMS 큰 규모 테이블(정형 데이터) 관리

- 비정형 데이터 : 형태가 고정되지 않음. 문자, 영상 등

 -> 정보 추출이 필요. 기존의 DBMS에서는 불가

 

 

빅데이터

- 데이터 크기가 커. 기존 시스템으로 획득, 저장, 관리, 분석이 불가능한 데이터

- 주로 비정형 데이터 -> 분산 시스템으로 처리

 

 

분산 시스템

- 여러 서버가 공통의 문제를 푸는 시스템

 -> 한 작업을 여러개로 분할. 각 서버가 할당된 작업을 병렬 수행.

 

 

하둡

- 클라우드 빅데이터 처리 기술, 환경

- 데이터 처리 위주 분산 시스템.

- 저비용으로 빅데이터 처리 가능 <- 1. 저가 서버로 분산 시스템, 2. 오픈소스

 

 

빅데이터 분석, 표현

- 분석 : 텍스트 마이닝, 데이터 마이닝(소셜 네트워크 분석)

- 표현 : 데이터 시각화

 

 

 

R

- 오픈소스

- 빅데이터 처리 가능

 

 

 

R 기반 비분산 빅데이터 처리

- 분산 시스템이 필요하지 않을만큼 큰 빅데이터의 경우 :  모든 데이터가 메모리에 있어야하는 R의 한계

-> 해결책으로 빅메모리와 빅애널리스틱스 패키지 제공

  => 데이터 구조만 메모리에 저장 : 실제 데이터는 필요한 경우 디스크에서 로드

 

 

 

분산 빅데이터 처리

 

하둡 구성요소

하둡 공통 hadoop common 하둡분산파일시스템 HDFS 하둡 맵리듀스 mapreduce
다른 구성 요소 지원 유틸리티 모음 빅데이터를 다수 컴퓨터에 분산 저장 HDFS에 저장된 빅데이터를 병렬처리
HDFS 접근 등 확장, 신뢰, 단순 빅데이터 분석 핵심 프로그래밍 모델

 

 

빅데이터 처리 구현 간소화와 구현 사례

- 기존에는 작업 분할과 분산 처리가 힘들었음. -> 간소화로 데이터와 처리에 집중 가능

 1. 대용량 스팸 메일 처리 (자연어 데이터)

 2. 다중 염기서열 정렬 (생물 정보)

 3. 내용 기반 음악 검색 (음악 데이터)

 4. 비디오 트랜스 코딩 (동영상 데이터)

 

 

빅데이터 기반 통계 분석 수요 증가

- 빅데이터 처리 간소화에 따른 자연스러운 현상

 -> 분석을 통한 새로운 현상의 발견이 빅데이터의 가치

- 마하둡(하둡 기반 기계학습 lib) : 군집분석, 분류, 협업 필터링 구현

 

 

R과 하둡을 이용한 빅데이터 통계 분석

- 리퍼 Rhipe : R에서 맵리듀스 프로그래밍 가능

- RHadoop : R에서 편리하게 맵리듀스 프로그래밍 가능. 개인 사용자는 무료. 4개의 R패키지로 제공

 

rhadoop rmr rhbase plyrmr
R에서 HDFS 접근 R에서 맵리듀스 프로그래밍 지원 하둡 기반 분산 데이터베이스  HBase 관리 rmr 패키지에서 생성된 정형 데이터를 plyr 패키지 방식으로 처리

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

빅데이터 - 4. 빅데이터 수집  (0) 2020.11.18
빅데이터 - 3. 하둡 프로그래밍  (0) 2020.11.17
빅데이터 - 1. 빅데이터, 데이터 과학, 활용  (0) 2020.11.17
네트워크  (0) 2020.05.23
보안  (0) 2020.05.23
728x90

빅데이터 시작

- 다양한 데이터 축적, 활용 -> 정책 결정, 마케팅

-> 빅데이터 개념, 활용, 문제 등 포괄적 이해 필요

 

 

 

데이터는 많은 것인가?

-> 많긴 하나 기존 기술(RDBMS)로는 보관 처리 분석 하기 힘듬

 

 

기업의 데이터 관리 어려움 증가

- 적절하게 수집, 저장, 분석이 힘듬

 -> 개인정보 유출, 오용 증가

 

 

빅데이터 출현 배경

- 데이터 저장 매체 가격 하락

- 연결, 소통 증가

- 정보 기술 발전

 

 

빅데이터 

- velocity

- variate

- volume

=> 3V

 

 

데이터 과학

- 빅데이터를 효과적으로 수집, 분석 -> 통찰 -> 최종 사용자에게 간단한 비기술적 언어로 표현하는 것과 관련된 학문

 * 통계 + 수학 + 프로그래밍 + 컴퓨터 과학 등 기술과 이론이 결합된 융합학문

 

 

데이터 과학자 data scientist

- 비즈니스를 우선 이해하고, 프로그래밍, 통계학 + 결과를 설득할수 있는 대화 능력을 가져야 함.

=> 하드 스킬 : 빅데이터 처리, 분석에 필요한 이론/기술 지식. ex. DB, 프로그래밍, 통계, 데이터마이닝, 텍스트마이닝

=> 소프트 스킬 : 빅데이터서 가치 발견하는 통찰력, 스토리 텔링, 시각화등 전달 능력, 타 분야 전문가와 소통 협력하는 능력

 

 

 

 

일반 경영과 데이터

- 경영 활동의 부산물

 -> 수익에 직접적 영향

 

빅데이터 경영과 데이터

- 데이터가 생산을 위한 투입물 -> 기업 성공과 의사 결정에 좌우

 

 

 

산업에서의 빅데이터

- 금융: 기존의 신용 위험 모델이 실제 금융 위기 파악 못함 -> 빅데이터로 초래된 첫 위기

- 의료 : 전자 의료 기록(EMR), 잘못된 약물과 처방을 찾거나 효과적인 치료법 찾는게 가능

 

 

빅데이터 활용 사례

 

https://cdckytweb.tistory.com/34

 

 

 

기업 경영과 데이터

- 경영 성과에 직결될 만큼 필수적 -> 의사 결정의 질을 높이기 위해 빅데이터 활용해야함

- 국내 기업은 기존 시스템 ERM 전사적 자원 관리, CRM 고객관계 관리 활용

- 경영자 1/3은 자신의 의사결정을 신뢰하지 못하거나 모르는 정보에 근거. 1/2는 필요 정보에 접근 조차 못함.

- 경험의 함정에 벗어나 신속한 의사결정이 필요함. 빅데이터가 보조

 

 

 

빅데이터 기반 의사결정 4단계

 

https://blog.naver.com/sslee4ever/130166255753

 

자동차 의사결정 4단계 (빅데이터 기반 의사결정 4단계 비교)

- 1단계 ; 운전자가 속도계를 보며 상황 파악

- 2단계 : 대시보드로 연료, 바퀴 등 차량 문제를 구체적 확인

- 3단계 : 네비게이션으로 목적지까지 소요 시간과 연료소모량 예측 및 대응

- 4단계 : 출발지에서 목적지까지 최적 경로를 자동화해 시간, 연료 최소화하도록 주행

 

 

 

 

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

빅데이터 - 3. 하둡 프로그래밍  (0) 2020.11.17
빅데이터 - 2. 빅데이터 기술  (0) 2020.11.17
네트워크  (0) 2020.05.23
보안  (0) 2020.05.23
테스트  (0) 2020.05.23
728x90

시험 과제를 정리하면서

 

6과목중 마지막 1과목만 남았다.

 

대학 수학, 확률, 통계, 파이썬R, 인공지능 등

 

 

이전에 공부 정리한다고,

 

정신없이 하다보니 

 

내가 이전에 뭘했나 가끔 검색해서 볼때는 도움되지만

 

머리에는 하나도 남아있지 않더라

 

 

그래서 이번 과제를 하면서

 

공부했던 내용들을 많이 복습 할수 있었다.

(오래 걸리기도 했고 ..)

 

 

특히 파이썬R이 문제가 4개인데

 

한문제에 문제가 문항이 2~4개있고,

 

한 문항이 그룹별 시각화를 하라고하니

 

과제하면 할수록 하기싫어져 더 오래 걸리긴 했다.

 

 

 

 

이번에 인공지능 과제물을 하는 중에

 

예~ 전에 공부했던 밑바닥에서 시작하는 딥러닝 책을 참고하는데

 

기억이 새록새록 나면서도,

 

필터를 시각화 했을때 나오는 이상한 문양들이 이게 무슨소리인지

 

잘 이해하지 못하곤 했었다.

 

 

 

한동안 딥러닝을 공부하지 않으면서 서서히 잊어가다

 

이제서야 합성곱 연산의 결과가 특징이고

 

학습된 필터 결과가 특징 분류기인걸 이해했다 ..

 

 

한가지만 깊이 해야하는데 ㅋㅋㅋㅋㅋ 

 

 

 

그걸 보고나서

 

뒤에 나오는

 

LeNet 부터 vgg16, googlenet 등등 보면서

 

지금은 신경망 모델을 이해할수 있을것 같은 자신감이 생기더라 

 

 

 

 

 

한번 딥러닝에 대해서 쭉 정리해보고는 싶었는데

 

마침 저자가 합성곱 계층별 필터 시각화에 대해 다음 논문을 참고 했더라.

 

오늘 과제 마무리하고 저 논문을 정리해볼까 싶다.

 

 

 

 

Visualizing and Understanding Convolutional Networks

합성곱 신경망의 시각화와 이해

ref : arxiv.org/abs/1311.2901

 

 많은 합성곱 신경망 모델들이 이미지넷 밴치마크에서 좋은 성능을 보이고 있는데, 왜 이렇게 성능이 좋고, 어떻게 개선되는지는 명확하지 않았습니다. 본 논문에서는 이 문제들을 다루었으며, 중간 특징 계층과 분류기 동작을 시각화하여 보여주고자 합니다.

 이 과정에서 이미지넷 분류 밴치마크에서 krizhesky의 것보다 더 좋은 성능의 모델을 만들었으며, 여러 모델 계층에서 하나를 제거시 어떻게 성능 변화가 생기는지 실험해보았습니다. 추가적으로, 이 모델을 다른 데이터 셋에 훈련하고 실험해 본 결과 잘 동작하는것을 볼수 있었습니다.

300x250

'그외 > 로그' 카테고리의 다른 글

논문 읽기와 구현  (0) 2020.11.23
과제 마무리  (0) 2020.11.19
인공지능에 대해 공부하면서  (0) 2020.11.11
시험 준비와 근황  (0) 2020.11.09
공부해나간 과정  (0) 2020.11.01
728x90

이전 실습과제

1. 주가 정보 크롤링 프로그램 작성 matplotlib과 seaborn을 이용해 csv jupyter그래프 표시

2. sysstat data를 dataframe으로 바꾸어서 동일하게 분석

필드 데이터 실습

 

* sysstat 성능 상황 기록

- sar 명령어로 10분간격 확인 가능

ref : platformengineer.tistory.com/46 (sysstat 사용법)

 

 

apt --installed list | grep sysstat

apt-get install sysstat -y

vi /etc/default/sysstat

ENABLED="false" -> "true"

service sysstat restart

/var/log/sysstat에서 확인 가능

 

 

 

----

1. colab 사용

2. git repo 와 colap연동

3. ml 기본코드 이해

4. sklearn 빌트인 모델 사용 코드 작성 regression, classification

 

 

과제

1. load_boston, load_innerud, fetch_california_housing 데이터 가져와 분석, 모델 선택하여 regression 학습

2. sysstat.data 를 dataframe으로 바꿔서 동일하게 분석하기

 

 

 

 

 

colab

- gpu 무료 제공

- jupyter notebook

 

 

 

colab과 깃랩연동

- 기존 .ssh파일 모든 사용자 r권한 주기

   chmod a+r ~/.ssh/*

- .ssh 아래 파일들 가져오기

 

* filzilla 사용

-  사이트 관리자에 sftp로 추가. 구글 클라우드 인스턴스 ppk, pem 사용하여 연결

blog.naver.com/PostView.nhn?blogId=appnada&logNo=221194916635&parentCategoryNo=&categoryNo=14&viewDate=&isShowPopularPosts=true&from=search

 

 

* scp의 경우

scp -i 키 계정@구글클라우드플랫폼주소:/home/디렉토리/파일 /home/옮길디렉토리

 

 

 

 

구글 드라이브 마운트 시키기

 

from google.colab import drive

import os, sys

drive.mount("/content/mnt")

nb_path="/content/notebooks"

os.symlink("/contnent/mnt/My Drive/Colab Notebooks", nb_path)

sys.path.insert(0, nb_path)

 

 

 

 

 

!cd /content/notebooks/

!git config --global user.name "name"

!git config --global user.email "email"

 

** 나는 /content/notebooks이 안되서 심볼릭 링크가 아니라 그냥 원본 폴더로 cd했다. 아래도 동일

!cd /content/mnt/My\ Drive/Colab\ Notebooks

-> 보니까 심볼릭 링크를 만들때 /contnent/mnt/My drive/ ...로 오타를 내서 잘못됫더라 고쳤더니 기존 코드대로 동작

 

!mkdir ~/.ssh

!cp /content/mnt/"My Drive"/id_rsa ~/.ssh

!cp /content/mnt/"My Drive"/id_rsa.pub ~/.ssh

!cp /content/mnt/"My Drive"/authorized_keys ~/.ssh

!cp /content/mnt/"My Drive"/known_hosts ~/.ssh

!ls ~/.ssh

 

 

!git clone 클론할 저장소 /content/notebooks/폴더명

 

 

# -C는 저장소 명시

!git -C /content/notebooks/****** add .

!git -C /content/notebooks/****** pull

!git -C /content/notebooks/****** status

!git -C /content/notebooks/******* commit -m "message"

!git -C /content/notebooks/****** push

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------------

server refused 문제

- 중간에 하다가 퍼블릭키 문제로 서버 거부가 발생

- 클라이언트 ppk와 서버의 pub가 매칭이 안됨 + 서버의 공개키가 없어져있었음.

 

- 아래 링크 참고하여 해결

 1. 푸티 키젠으로 새 pub, ppk 생성

 2. 서버 ssh에 새 pub 등록

 3. 웹으로 서버 접속하여 authorized_key에 새 pub 복붙

 4. sshd restart

 

opentutorials.org/module/432/3742

serverfault.com/questions/955843/putty-server-refused-our-key-google-cloud-platform-compute-engine-instance

 

---------------

 

 

 

 

 

 

1. load_boston, load_innerud, fetch_california_housing 데이터 가져와 분석, 모델 선택하여 regression 학습

 

 

 

california housing regression

1. 라이브러리 임포트

 

2. 데이터 준비하기

 

3. 데이터 확인

 

 

 

 

 

4. 회귀 모델 생성 학습, 예측, 시각화까지

 단순 선형 회귀 모델

 

 라쏘라르 모델

 

 

 

 

 

 

 

 

 

유방암 데이터셋 SVM으로 분류하기 

1. 라이브러리 임포트

 

2. 데이터 준비

 

 

 

 

 

3. SVM 학습, 분류, 시각화

 

 

 

 

 

 

 

 

 

 

 

300x250
728x90

게임을 이용해 인공지능 연구 이유

- 문제가 잘 풀렸는지 판단하기 쉬움

- 많은 지식이 필요없이, 이기는 위치를 탐색 알고리즘으로 찾으면 됨.

- 단순 탐색 알고리즘으론 힘듬.

 

 

최대-최소 탐색 min-max search

- 나는 최대한 유리, 상대도 최대한 유리한 수를 선택한다 판단.

- 각 노드에 가치 부여

- 최대화 : 최대의 가치를 갖는 후계 노드 선택. 현재 노드는 가장 큰 후계노드의 가치를 가짐.

- 최소화 : 상대는 나에게 가장 낮은 가치를 주는 노드 선택할것. 현재 노드는 가장 낮은 후계노드의 가치를 가짐.

- 최대, 최소화를 여러 단계 거쳐 나에게 유리한 수 선택

 

 

 

 

최대 최소 탐색 트리

- 상대방의 응수를 고려하여 결정하는 경우에 대한 트리

- 내가 A를 선택시 상대는 D 선택, 나는 그나마 다른 노드의 최소에 비해 가장 큰 가치를 갖는 J를 선택 할 수 있음.

 

 

 

몬테 카를로 탐색

- 기존의 게임 트리 탐색 : 경우의 수가 방대한 경우 경험적 지식으로 평가 함수 만들기 어려움.

- 의사 결정 문제에서 활용되는 경험적 탐색 알고리즘

- 탐색 공간 무작위 표본화로 탐색 트리 구성

 

 

몬테카를로 트리 탐색 절차

1. 트리는 점증, 비대칭적 방식으로 생성.

2. 매 반복시 루트 노드서 시작하여 적절한 자식 노드를 선택하는 과정을 반복.

3. 리프노드에 도달한 다음 자식 노드를 생성하여 확장.

4. 리프토드 경로 결정 정책은 탐사, 활용을 균형적으로 설계

  * 탐사 exploration : 검사하지 않은 영역을 확인

  * 활용 exploitation : 유망 영역 확인

5. 시뮬레이션 시행 : 새 노드 가치 평가 위하여 몬테카를로 롤아웃 수행. 

  * 몬테카를로 롤아웃 : 무작위 방식으로 게임 깥까지 진행.

6. 시뮬레이션 결과 시작 리프노드에서 루프노드까지 통계치 업데이트에 활용

 => 경험적 지식을 반영한 평가 함수를 사용하지는 않음.

7. 제한에 도달할떄 까지 반복. 도달 시 우수한 행동 선택

  * 제한 : 시간, 메모리, 반복 횟수 등

 

 

 

몬테카를로 트리 탐색 알고리즘

- 노드 n_i : 게임 특정 상태. 그 노드의 현재 가치 v_i, 노드 방문 횟수 N_i 등 포함.

- 루트 노드 하나인 트리로 탐색 시작하여 4단계 수행

1. 선택 : 선택 전략에 따라 깊이 방향으로 자식 노드 선택 반복. 

2. 확장 : 선택된 노드에 추가 행동하여 트리 확장

3. 시뮬레이션 : 확장된 노드에서 게임이 끝날떄까지 게임 진행(롤아웃).

4. 역전파 : 시뮬레이션 결과 시작 노드에서 루트노드까지 선택경로를 따라 업데이트

 

 

 

 

300x250

'인공지능' 카테고리의 다른 글

파이썬머신러닝 - 1. 기초  (0) 2020.11.23
패턴인식이론 - 1. 간단  (0) 2020.11.18
인공지능 - 6. 탐색 과정  (0) 2020.11.11
인공지능 - 5. 퍼지이론  (0) 2020.11.11
인공지능 - 4. 논리기반 지식표현  (0) 2020.11.11
728x90

그래프 탐색

- 문제에 대한 상대공간이 있으면, 해는 초기 상태에서 목표상태까지 연산을 반복하여 얻을 수 있음.

 

 

탐색 종류

- 맹목적 탐색 blind search : 목표 노드 위치와 무관한 순서대로 노드 확장. 소모적

- 경험적 탐색 heuristic search : 목표 노드와 관련된 정보나 경험적 정보를 이용한 탐색

  * 경험적 정보 heuristic information : 항상 옳지는 않지만 대부분 잘 맞는 정보

  임의경로 탐색 최적경로 탐색
맹목적 탐색 깊이우선 탐색
너비우선 탐색
균일비용 탐색
경험적 탐색 언덕오르기 탐색
최적우선 탐색
A* 알고리즘

 

깊이 우선 탐색 depth first search; dfs

- 해가 존재할 가능성이 있는한 앞으로 계속 전진하는 탐색

- 더 진행할수 없으면 다른 경로를 선택가능한 노드로 복귀하여 탐색 계속 =>백트래킹

 

 

너비 우선 탐색 breadth-first search, bfs

- 생성 순서에 따라 노드를 확장하는 방법

- 출발 노드에서 목표노드까지 최단길이 보장 -> 경로가 긴경우 탐색 가지가 매우 증가

 

 

균일 비용 탐색 uniform cost search

- 출발 노드서 경로비용이 최소인 노드를 확장시켜나가는 방식

 

 

 

 

경험적 탐색방법 heuristic search method

- 맹목적 탐색 방법의 한계 : 경로 찾는데 너무 많은이 노드 확장

- 경험적 정보로 보다 빠르게 탐색 진행하는 방법

- 바람직한 노드를 선택하기 위해 평가 함수 evaluation function 사용

 

 

언덕 오르기 탐색 hill climbing search

- 목표까지 경로비용 h(n)을 기준으로 노드 선택.

- 실제 h(n)을 구할수 없으니 예측치 hat{h}(n) 이용

   * hat{h}(n) 은 경험적 정보를 이용한 h(n) 예측치

 - 경로 비용이 작은 노드만 선택하여 지역적 최대치에 도달하나 전역적 최대치인지는 보장못함.

 

 

모의 담금질 simulated annealing

- 언덕 오르기 탐색이 지역 최대치에서 멈출수 있는 문제를 개선하기 위한 방법

- 가열하면 원자들이 움직이며 식으면서 더 낮은 에너지를 찾을 가능성이 높아지므로 모의 담금질이라 부름.

 

최적 우선 탐색

- 임의의 노드에 대한 평가함수 사용. 목표 노드까지 비용 예측치.(언덕 오르기 탐색과 동일)

- 언덕 오르기 탐색은 진행 방향의 후계 노드 중에서 가장 적합한 노드 선택

- 최적 우선 탐색은 전체 노드 대상으로 선택

 

 

A* 알고리즘

- 언덕오르기, 모의담금질과는 달리 출발 노드서 도착 노드까지 비용을 평가 함수로 고려

 ->  평가 함수 f(n) = g(n) + h(n)

    * g(n) : 출발노드서 n노드까지 비용

    * h(n) : 노드 n에서 목표노드 n까지 비용

- h(n)은 아직 탐색하지 못했으므로 계산하기 어렵거나 알 수 없음.

     -> 경험적 정보에 의한 예측 평가 함수

        hat{f}(n) = g(n) + hat{h)(n)

        * g(n) : 출발노드서 n노드까지 비용

        * hat{h}(n) : 노드 n에서 목표노드 n까지 비용

- hat{h}(n)이  잘 예측되어야 f(n)에 가까워져 효율적 탐색 수행.

 

300x250

'인공지능' 카테고리의 다른 글

패턴인식이론 - 1. 간단  (0) 2020.11.18
인공지능 - 7. 게임 트리  (0) 2020.11.11
인공지능 - 5. 퍼지이론  (0) 2020.11.11
인공지능 - 4. 논리기반 지식표현  (0) 2020.11.11
인공지능 - 3. 지식  (0) 2020.11.11
728x90

오늘 방통대 인공지능 과목 내용들을 대강 훌터본것같다.

 

내가 처음 인공지능을 공부했을 때 

 

"밑바닥 부터 시작하는 딥러닝" 책을 보면서 시작했었다.

 

 

그 책은 수학적인 이론 내용들은 최대한 줄이고,

 

개념적인 내용과 구현 위주다 보니

 

인공지능의 범위, 종류

 

기초적인 퍼샙트론의 개념부터

 

신경망을 만들어가고, 학습시키고

 

효과적으로 학습하기 위한 다양한 기법 

 

그리고 당시 딥러닝 기술 등을 알아봤었다.

 

 

 

 

수학 관련 내용이 없다보니 너무 좋긴 했으나

 

mnist 데이터 셋을 분류하는 신경망 만들고,

 

아무 CNN이나 가져와서 이미지 인식을 해보는건 좋은데

 

인공지능으로 뭘 해볼려고 할수가 없었다.

 

 

 

 

그 다음으로는 텐서 플로우 책을 봤었는데

 

쌩으로 신경망을 만들어주는게 아니라

 

함수 하나하나가 신경망 층이되서 

 

밑바닥부터 시작하는 딥러닝 책에서 설명해주는 쌩 코딩보다는

 

훨씬 쉽게 신경망을 만들수 있었다.

 

거기에 대한 이미지 관련 예제들을 해보곤 했었다.

 

 

 

 

그 다음에는 케라스 책을 봤었는데

 

케라스는 텐서 플로보다 더 간단하게 신경망을 만들수 있었으나

 

텐서플로 책과 비슷한 예제만 몇번 해보고 끝났었다.

 

 

 

 

 

 

당시 내가 궁금했던 부분은

 

단순히 여러가지 신경망을 예제만 따라치면서 구현하고 성능 평가하고 끝내기 보다는

 

다른 신경망들을 비교하면서, 모델을 조정하면서 어떻게 성능이 개선되었는지와

 

영상 분할 부분을 제대로 공부하고 싶었는데

 

이런 내용들은 시중 책으로는 잘 나오지가 않더라.

 

특히 영상 분할 같은 경우는 몇 페이지에 설명, 예제 코드 주고 끝일때가 많았다.

 

 

 

 

 

그 이상의 영역은 논문들을 봤어야 했는데

 

당시 수학을 공부하지 않은 상태로는 논문을 제대로 이해할 수도 없었고

 

 

 

 

 

최근 확률, 통계, 다변량 분석 등을 공부하면서

 

이전에 매번 우도, 우도비, 최대우도법 내용들을 볼때마다 번역체 때문에 이해  하지도 못했던것과 달리

 

우도를 가능도라고 배우니까 그동안 답답하던 최대 우도법이 이해가 되었고,

 

 최소 제곱법 또한 R을 이용해서 실제 데이터를 가지고 몇번 연습하면서 좀더 명확하게 알수 있었다.

 

 

 

 

 

 

사실 가장 먼저 공부했어야만 하는 과목인 인공지능을

 

늦었지만 컴퓨터비전, 딥러닝, 패턴인식, 확률, 통계를 공부하고 보니

 

전보다는 많이 이해하게 된거같다.

 

 

 

300x250

'그외 > 로그' 카테고리의 다른 글

과제 마무리  (0) 2020.11.19
시험 과제를 하면서  (0) 2020.11.17
시험 준비와 근황  (0) 2020.11.09
공부해나간 과정  (0) 2020.11.01
공부 고민  (0) 2020.08.16
728x90

 퍼지 이론의 필요성

- 사람은 모호한 표현과 지식을 사용하나 컴퓨터는 정확한 수를 주어야하는 문제가 있음

- 인간의 모호한 표현을 처리하는 이론을 제공

 

 

 

퍼지 이론

- 1965년 로프티 자데가 소개.

- 모호하게 표현된 자료를 유용한 자료로 만들기 위해 퍼지집합, 퍼지논리, 퍼지수 개념과 계산방법이 개발

   ex. 내일 비가 올 확률은 70% X ,    내일 비가 올 가능성이 크다. O

 

 

퍼지 집합

- 사과 두어개를 사오라고 심부름 시키는 경우.

- "두어개" 2, 3개를 의미하나 2개가 더 강조됨.

- 퍼지 집합 : 원소 포함 여부가 참거짓이 아닌 포함 가능성으로 표현되는 집합

  ex. "두어" = {(2, 1.0), (3, 0.5)}

      "2 or 3" = {(2, 1.0), (3, 0.5)}

 

 

퍼지 집합과 소속 함수

- 퍼지 이론에선 불확실한 상황을 다룰때 숫자보다 자연여 구문 표현을 많이 사용.

 ex. "철수는 젊다"

- 이 예시의 경우 "젊다"라는 구문 표현이 있지만 어느 정도인지 "젊다"를 정의해야함.

- 아래의 곡선은 퍼지 집합의 소속 함수(membership function)으로 각 나이 값이 퍼지 집합에 포함될 가능성을 의미.

 

퍼지 집합의 정의

- 소속함수 mu_A(x) : 원소 x가 집합 A에 소속될 가능성을 나타내는 함수

  -> 원소 x가 집합 A에 포함시 -> mu_A(x) = 1, 포함 안될시 -> mu_A(x) = 0

  => 이경우 고전 집합에서 소속함수 mu_A는 전체 집합 U의 모든 원소를 집합 {0, 1}에 대응, 한정한다.

- 소속 함수의 값이 0, 1사이 임의의 값을 가지는 경우 소속함수 mu_A는 각 원소를 집합 [0, 1]에 대응.

 

- 앞의 "두어개'에 대한 소속함수들은 좌측과 같고, 퍼지집합을 표현하면 우측과 같다.

 

- 고전 집합과 퍼지 집합의 비교

 

퍼지 연산

(생략)

 

 

퍼지 추론 현황

- 산업체 제어 프로세스, 시스템 모델링, 퍼지 지식 기반시스템 개발 등에 활용

1. 퍼지 규칙 조건부와 결론부는 언어적 변수 포함

2. 퍼지 규칙을 이용한 추론 절차는 일반적 규칙과 다름

 

 

언여적 변수를 사용한 퍼지 추론

- 1975년 자데 교수가 도입 -> 상업적 응용에 큰 역활

- 특정 변수를 수치 뿐만이 아니라 언어적 값도 사용가능하게 함.

 ex. "키"는 보통 수치로 값을 사용. 언어적 변수를 사용시 "작다", "크다", "보통"이다. 값도 사용가능

 

탱크 수위 조절 제어 시스템에서의 예시

- "탱크 수위가 높으면 배수 밸브를 연다"라는 지식이 있다.

   퍼지규칙 :  IF 수위가 높으면 THEN 밸브를 연다.

- 3m가 높다고 가정시 다음과 같이 퍼지 집합으로 해석

   HIGH = 0.1/2.0m + 0.1/2.2m + 0.3/2.3m + 0.3/2.4m +

              0.5/2.5m + 0.7/2.6m + 0.7/2.7m + 0.9/2,8m +

              0.9/2.9m + 1.0/3.0m + 1.0/3.1m + ...

 

- 밸브의 개방 정도도 퍼지 집합으로 표현 가능

 1. 대략적 값을 정함

 2. 현장 실무자 작업을 관찰하여 정함.

 3. 시뮬레이션으로 양호한 결과를 내도록 함수값 조정

 

 

 

퍼지 추론

- 퍼지 규칙을 이용한 추론은 근사적이므로 근사 추론 approximate reasoning, 퍼지 추론 fuzzy reasoning이라고 함.

- 아래의 규칙이 존재하는 경우(긍정 논법)

      IF x is A TEHN y is B

ex. 현재 수위가 "조금 높다"로 관측. "조금 높다"에 대한 소속함수가 정의됨. 규칙과 관측 결과가 주어질때, 추론 가능

   규칙 : IF 수위가 높다 THEN 벨브를 연다.

   사실 : 수위가 조금 높다.

   추론 결과 :         벨브를 조금 연다.

* 이진 논리를 사용한다면 규칙 조건(수위 높다)과 사실(조금 높다)가 일치하지 않아 추론 불가

 

 

 

 

수위 조절 벨브 시스템에서 퍼지 추론

- 제시된 규칙과 사실

- 추론 과정이 더있으나 생략

 

 

300x250

'인공지능' 카테고리의 다른 글

인공지능 - 7. 게임 트리  (0) 2020.11.11
인공지능 - 6. 탐색 과정  (0) 2020.11.11
인공지능 - 4. 논리기반 지식표현  (0) 2020.11.11
인공지능 - 3. 지식  (0) 2020.11.11
인공지능 - 1. 개요 ~ 탐색  (0) 2020.10.15

+ Recent posts