본문 바로가기

20101123 그냥 잡설.. 퍼포먼스를 올리는것도 중요하지만.. 요즘같이 빠른컴퓨터가 보편화된 시점에선 슬슬 UI 개발에도 힘 쓸 때가 된 듯.. 너도나도 애플리케이션의 기능과 성능에서 경쟁을 하던 시대에 애플의 잡스는 애플리케이션의 룩앤필 을 앞세워 나중에는 개성공한듯.. 역시 디자인이 중요하다. 아니면말고 페이스북. 참 괜찮은데, 처음 가입하고 이것저것 할 때는 많이 어지럽더라 조금만 더 깔끔하게 디자인됐으면 좋겠다..; 흠냐..
용어정리.. Activation(활성화 값) 신경망에서 뉴런에 인가되는 가중치 합 Adaline(아달라인) 패턴의 범주화에 쓰이는 Grossberg와 Carpenter에 의해 개발된 이론이며, 안정성-유연성(stability-plasticity) 딜레마에 대해 설명하는 데 쓰인다. Adaptive Resonance Theory(ART) 단계적으로 문제를 풀어나가는 과정 Annealing(어닐링) 네트워크가 지역최소 값(Local Minimum)으로 떨어지는 것을 막는 처리 ART(Adaptive Resonance Theory) ART1은 이진입력에 대한 이 이론의 초기개발 결과이다. ART2는 아날로그 입력에 대해 더욱 발전된 것이다. ART3은 가장 최근의 이론이다. Artificial Neuron(인공 뉴런) 인..
SOM 구현 가중치 설정 가우스분포, 정규분포 SOM 구현중 bmu와 이웃노드의 가중치를 설정하는 방법은 많다. 그 중에 가우스분포를 많이 쓰는것 같던데 어떤 놈인고 하니.. f(x) = a * exp(-(x-b)^2 / c^2) a>0, b, c (a,b,c는 실수) 요모양으로 생겼다. 고딩때배우던 정규분포의 밀도함수를 닮았다.(거의 똑같다) a는 꼭대기의 높이, b는 꼭대기의 중심위치, c는 종의 너비를 결정한다. 정규분포와 비교를 하자면.. a값은 1/ sqrt(2*PI*(표준편차)), b는 (평균)이 되고, c는 sqrt(2)*(표준편차)가 되는듯. 어쨌든 x-b는 bmu와 이웃노드의 거리를 나타내고 c는 종의 너비 이니까.. c가 크면 학습하는 이웃노드의 개수는 많아질 것이고... a가 크면 게인값이 증가할것이다... 요 두 값을 어떻게 설..
디자인 패턴의 이해 1. 디자인 패턴은 클래스 라이브러리가 아니다. 더욱 더 일반적이고 추상적인 개념이다. >> 어떤 기능이 있는지, 그것들이 어떻게 관련되어 큰 기능을 하는지 2. 클래스 라이브러리 안에 디자인 패턴이 구현되어 있다. >> 이터레이터나 컬렉션이나.. 어댑터 패턴 같은 것들 등등.. 3. 프로그램은 완성품이 아니다. >> 디자인 패턴의 목표중 하나는 프로그램의 재 이용을 가능하게 하는 것이다. >> 따라서, 프로그램은 완성품이 아니라.. 다시 쓸 수 있는 도구.. 또는 기능을 확장하는 것이다. 4. 다양한 디자인 패턴을 이해하고 이용할 수 있어야 한다. 5. UML을 배우자 --;;
정리 - 인공 신경망 - 퍼셉트론(Perceptron) 두뇌의 인지 능력을 모방하도록 만든 인위적인 네트워크. - 역전파(Backpropagation, BP) 신경망의 학습에 사용되는 알고리즘이다. 순방향 네트워크에서 사용되는 학습 알고리즘인데, 입력값과 그에 대한출력값이 존재하는 지도학습 방법으로 구현된다. 입력값을 신경망에 넣어 나온 출력값을 목표값과 비교하여 오차를 구해, 신경망의 내부 노드의 연결가중치를 조율하는 방법으로 구현할 수 있다. - 아달라인(Adaline) 역전파 학습법을 기반으로 한 단일 레이어 신경망. 마달라인(Madaline) 은 아달라인의 복수형 ... 그러니까 멀티플 아달라인이다. 신경망 층의 개수가 둘 이상일때.. 패턴인식에 사용된다. .. 지금 자바로 열심히 만들고있는것도 마달라인의 일종인듯....
어보이드노트와 어베일러블텐션 Available Tension Avoid note i major7 9,13 11 ii m7 9,11 13 iii m7 11 ♭9,♭13 iv major7 9, #11, 13 . v 7 9,13 11 vi m7 9,11 ♭13 vii m7-5 11,♭13 ♭9
리팩토링의 중요성 리팩토링 소프트웨어 공학에서 리팩토링(refactoring)은 주로 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다. 자잘한 메소드들을 보기좋게 모아놓는다거나.. 복잡한 메소드를 이해하기쉽게 각 기능마다 여러 메소드들로 구현해서 모아놓는다거나.. 중복된 코드들을 하나로 묶는다거나.. 등등. 자세한 내용은 여기 .. >> 마틴 파울러의 리팩토링 * 대청 출판사에서 나온 Refactoring 번역서에서 발췌한 내용입니다. 1. 코드 속의 나쁜 냄새 1.1 중복된 코드 한 곳 이상에서 중복된 코드 구조가 나타..