Category Archives: 배우기

뇌/ 환각의 비밀

1부

  • 환각을 일으키는 것은 마약만이 아니다.
  • 나이 들면 보통 환각을 보게 됨.
    • 질병, 노환, 치매, 뇌졸중, 뇌손상, 신부전, 환기부족 수면부족 등 다양한 이유로 나타남
  • 감각박탈만 해도 환각이 일어남
    • 명상이나 초월적 상태, 과도한 지적 흥분과 몰입 상태에서도 일어남.
  • 시각적으로 단조로운 업무를 오랜 시간 해도 환각이 일어남
    • 사막을 건너거나, 남극 탐험을 하거나, 직선 도로를 질주하는 장거리 트럭 기사나 레이더 화면을 몇시간 보거나 등
    • 마이클 셔머라는 철인 3종 경기 선수가 경기 중에 외계인이 자신을 납치하는 환각을 본 사례
  • 라마찬드란 교수의 환각통 수술 법
    • 거울을 이용
  • 손과 입의 감각이 몸보다 훨씬 신경세포가 많이 배선 되어 있음.
    • 몸의 감각은 차별적으로 배선 되어 있다.
  • 뇌를 위에서 봤을 때 가운데를 가로지르는 영역으로 운동 영역(Motor Cotex)과 몸 감각 영역 (Somatosensory Cortex)이 배치되어 있는데, 운동 영역이 앞에, 감각 영역이 바로 뒤에 있다.

Continue reading

뇌/ 중독의 원리

1부

  • 중독은 대단히 다양한 것들이 있음.
    • 음식 중독 뿐만 아니라 다이어트 중독도 있다.
  • 중독 중 80%는 도파민(Dopamin) 때문
    • 하나 더 보면 세로토닌 (Serotonin)
    • 굳이 더 봐서 아편(Opioid)과 대마(Cannabinoid)까지 보면 거의 끝
    • 수용체 관점에서 볼 경우
  • 도파민은 뇌의 측좌핵의 VTA, Nucleus Accumbens 영역에서 관장.
    • 이건 모두 파충류의 뇌에 속함. 파충류의 뇌는 생존에 영향을 미치는 부분 (척수 위의)
    • (이런걸 보면 파충류의 뇌가 전두엽에 보상을 주는 것처럼 보인다. 처음엔 이래서 파충류의 뇌가 보스고 신피질이 직원인가 싶었는데, 결정권이 신피질에 있음을 생각해 보면 민주정에서의 대통령이라고 할 수 있을 듯. 결정은 신피질이 하고 결정을 잘하면 파충류의 뇌가 지지를 보냄)

Continue reading

뇌/ 뇌의 신비

1강

  • 뉴런은 뇌의 껍질에 있는거고 그 안쪽에는 신경섬유들이 가득차 있다.
  • 데이터를 보내는 축삭돌기는 1개고, 데이터를 받는 수상돌기는 대단히 많다.
    • 축삭돌기는 표면이 매끈하고 수상돌기는 표면이 거칠다.
    • 근데 축삭돌기 말단에 여러개로 갈라져서 여러 뉴런들에게 데이터를 전송할 수 있는 듯
  • 하나의 수상돌기에는 수많은 시냅스 가지가 있음
  • 데이터는 시냅스에 저장 됨
  • 시냅스 연결은 강하게 연결된 시냅스가 있고, 약하게 연결된 시냅스가 있음.
    • 2개의 시냅스가 동시에 작용하면 약한 시냅스가 강한 시냅스로 변화 됨.
    • 이거를 이용해서 고전적 조건화가 가능.
    • 음식이라는 자극은 강하고, 종소리의 자극은 약한데, 그 둘을 같이 자극해서 종소리 자극도 강하게 받아들이게 하면 이후에 종소리만 들려줘도 침이 분비가 됨.
  • 해마는 3중 시냅스 구조를 갖고 있음
    • 해마는 기억에 대해 중요한 부위
  • 지역적으로 뉴런들의 네트워크 연합을 시스템으로 구분하고 (시각 처리, 감각 처리, 언어 처리 등) 그 시스템끼리 다시 네트워크로 연결된다고 구분한다.
  • 뇌는 크게 인지 시스템, 감정 시스템, 동기 시스템으로 구분함.
    • 이 3가지가 연결되어서 자아를 구성한다고 본다.
    • 감정과 동기 시스템은 암묵적, 본능적인 것으로 본다.

Continue reading

C# 6.0 완벽 가이드/ .NET Framework 개요

  • .NET Framework의 거의 모든 능력은 다종다양한 ‘관리되는 형식(managed type)’들을 통해 제공된다. 이 형식들은 계통구조(hierarchy) 형태의 이름공간들로 조직화되어 있으며, 일단의 어셈블리 파일들로 배포, 설치된다. 이들과 CLR(공용 언어 런타임)을 합친 것이 바로 .NET 플랫폼이다.
  • .NET Framework의 형식들 일부는 CLR이 직접 사용한다. 이들은 관리되는 호스팅 환경에 필수적인 형식들로, mscorlib.dll 이라는 어셈블리 안에 들어 있다.
    • C#의 내장 형식들과 기본 컬렉션 클래스들, 그리고 스트림 처리나 직렬화, 반영(reflection), 스레드 적용, 네이티브 상호운용성을 위한 형식들이 여기에 속한다.
  • 이보다 한 수준 위에는 CLR 수준의 기능성에 살을 붙이는 추가적인 형식들이 있다. 이들은 이를테면 XML 처리나 네트워킹, LINQ 같은 기능을 제공한다.
  • .NET Framework의 그 나머지 부분은 응용 API 들로 구성되어 있는데, 이들 대부분은 크게 다음과 같은 3가지 기능 영역으로 분류된다.
    • 사용자 인터페이스 기술
    • 뒷단(backend) 기술
    • 분산 시스템 기술
  • .NET Framework 4.6의 새로운 기능
    • 쓰레기 수거기가 수거를 실행하는 시점을 좀 더 세밀하게 제어할 수 있는 새 메서드들이 GC 클래스에 추가되었다.
    • 새롭고 더 빠른 64비트 JIT 컴파일러가 도입되었다.
    • System.Numerics 이름공간에 하드웨어 가속 행렬 및 벡터 형식들이 추가되었다.
    • 라이브러리 작성자를 위해 System.AppContext라는 새로운 클래스가 추가되었다. 이를 이용해 라이브러리를 작성하면 라이브러리 사용자가 새로운 API 기능들을 선택적으로 전환할 수 있다.
    • Task 인스턴스 생성시 현재 스레드의 문화 설정과 UI 문화 설정이 반영된다.
    • 더 많은 컬렉션 형식들이 IReadOnlyCollection<T>를 구현한다.
    • WPF가 개선되었다. (더 나은 터치 및 고 DPI 처리 등)
    • ASP.NET이 HTTP/2와 Window 10의 TBP(Token Binding Protocol)를 지원한다.
  • .NET Framework 4.5의 새로운 기능
    • Task를 돌려주는 메서드들을 통한 광범위한 비동기성 지원
    • ZIP 압축 프로토콜 지원
    • 새로운 HttpClient 클래스를 통한 HTTP 지원 개선
    • 쓰레기 수거기와 어셈블리 자원 조회 성능 향상
    • WinRT 상호운용성 및 Windows 스토어 모바일 앱 구축을 위한 API 지원
    • 새로운 TypeInfo 클래스 추가
    • 정규 표현식 부합시 만료 시간을 지정하는 능력 추가
    • 병렬 컴퓨팅 부분에서 생산자-소비자 스타일의 네트워크 구축을 위한 Dataflow라는 특화된 라이브러리가 추가

Continue reading

Machine Learning/ 적용 사례

Recommender Systems

https://www.coursera.org/learn/machine-learning/

  • 사용자 정보를 Matrix로 구성하여 사용자의 선호에 맞는 컨텐츠나 유사한 컨텐츠를 추천하는 추천 시스템.
  • 이하 시스템에 대한 내용은 다음의 조건을 따른다.
    • 사용자는 각각의 영화에 대해 1-5개의 별점을 줄 수 있음.
    • 별점을 매기지 않았다면 ?로 표시
    • 유저 수는 nu로 표기, 영화 수는 nm으로 표기
    • 유저 j가 영화 i에 대해 평점을 주었다면 r(i, j) = 1이라고 표기
      • r 행렬은 별점을 주었는지 안 주었는지만 판별
    • 유저 j가 영화 i에 부여한 별점은 y(i, j) 로 표기

Continue reading

Machine Learning/ 알고리즘 발전 시키기

Vectorize

  • Σ로 표현되는 식을 벡터로 표현할 수 있는 경우 –벡터는 n x 1 행렬이므로 사실상 행렬– 벡터로 변환하여 계산하면 식 자체가 간편해 질 뿐더러, 행렬의 병렬처리를 지원하는 프로그램을 사용하면 성능에서도 유리하다.
    • 예컨대 아래의 식을
      • h_{\theta}(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_3^2 + ...
    • 벡터화 하면 아래와 같이 표현 가능하다.
      • \theta = [ \theta_0; \theta_1; \theta_2;  ... \theta_n ]
      • X = [ x_0; x_1; x_2; ... x_n ]
        • x0는 정의상 1과 같다.
      • h_{\theta}(x) = \theta^T X
  • hθ(x)를 Vectorize 했다면 비용함수 J(θ)도 벡터로 간단하게 할 수 있다.
    • 아래의 기존 식을
      • J(\theta) = \frac{1}{2m} \sum_{i=1}^m (h_\theta (x_i) - y_i)^2
    • 벡터화하면 아래와 같이 표현 가능하다.
      • y = [ y_1; y_2; ... y_n ]
      • J(\theta) = \frac{1}{2m} ((\theta^T X - y)^2)
        • 행렬의 제곱은 .^ 이라는 연산을 이용한다. 프로그램적으로 ‘.’ 은 element 연산을 의미한다.
  • 프로그램상 Σ 연산은 for 문을 도는 형식이 되며, 행렬 연산을 지원하는 프로그램의 경우 Vector 연산은 병렬로 처리가 된다.
  • 물론 행렬 계산은 역행렬 계산과 같은 상황에서 부하가 많이 걸리지만, Octave와 같은 프로그램에서는 pinv 와 같은 함수로 계산해 pseudo 값을 계산해 주므로 행렬 계산에 익숙해질 필요가 있다.

Continue reading

Machine Learning/ 이상탐지

주의) 이 페이지에서는 공식의 유도 과정 같은 것은 정리하지 않는다. 공식의 유도 과정은 <코세라 강의> 참조.

이상탐지(Anormaly Detection)

https://www.coursera.org/learn/machine-learning/

  • 군집을 이루는 데이터 분포를 이용하여, 분포에서 멀어진 데이터를 이상(anormaly)이라고 판단하는 알고리즘.
    • 데이터에 오류가 있다는 뜻이 아니다. 군집과 멀어졌으므로 이상해 보이는 데이터를 의미한다.
  • 데이터가 이상한지 아닌지는 데이터의 밀도(Density estimation)를 추정하는 함수 P(x)를 통해 할 수 있다.
    • 이 함수는 가우시안 분포를 이용하여 계산한다. 아래 내용 참조

Continue reading

Machine Learning/ PCA

주의) 이 페이지에서는 공식의 유도 과정 같은 것은 정리하지 않는다. 공식의 유도 과정은 <코세라 강의> 참조.

PCA (Principal Component Analysis)

https://www.coursera.org/learn/machine-learning/

  • 데이터의 차원 수를 낮춰서 데이터를 압축하는 알고리즘.
    • 2차원 데이터를 1차원 선으로 줄이는 것, 3차원 데이터를 2차원 면으로 줄이는 것과 같은 것이 기본이며, 같은 개념으로 1000차원 데이터를 100차원으로 줄인다. 당연히 차원을 많이 축소할 수록 손실이 많이 발생하기 때문에 적당한 정도를 찾는 것이 중요하다.
    • 여기까지만 보면 고차원 데이터를 저차원에 투영하는 것 같지만 사실 투영은 아니다. 자세한 내용은 아래 참조.

Continue reading

Machine Learning/ K-평균 알고리즘

주의) 이 페이지에서는 공식의 유도 과정 같은 것은 정리하지 않는다. 공식의 유도 과정은 <코세라 강의> 참조.

K-평균 알고리즘(K-Means)

https://www.coursera.org/learn/machine-learning/

  • 정답이 주어지지 않는 비지도 학습(Unsupervised Learning)의 분류 알고리즘 중 하나. 가까운 데이터들끼리 묶어서 Cluster를 만드는 것이 핵심이다.
  • K-Means 알고리즘의 Input은 데이터셋과 클러스터의 갯수 2가지가 된다.
    • 몇 개의 클러스터를 만들 것이냐는 정하기 나름.

Continue reading

Machine Learning/ SVM

주의) 이 페이지에서는 공식의 유도 과정 같은 것은 정리하지 않는다. 공식의 유도 과정은 <코세라 강의> 참조.

SVM(Support Vector Machine)

http://diggdata.in/post/94066544971/support-vector-machine-without-tears

  • 로지스틱 회귀를 변형하여 간격(Margin)을 최대화 하는 선을 찾는 분류 알고리즘. Large Margin Classification이라고도 한다.
  • 로지스틱 회귀에서 hθ(x)가 1에 가까우면 y는 1, 0에 가까우면 y는 0으로 두었던 것에 반해 SVM에서는 hθ(x)가 1보다 큰 경우 y는 1, -1보다 작으면 y는 0인 것으로 본다.
    •  hθ(x)가 1보다 커지거나 -1보다 작을 때까지 계속 돌린다는 것. 이렇게 해서 간격을 크게 한다.

Continue reading