본문 바로가기
728x90
반응형

분류 전체보기647

FNN 원리와 구현 다층 신경망 FNN(Feedforward Neural Network) 기존 퍼셉트론의 선형분리성의 한계를 극복한다. 2개의 계층으로 구성된 다층 펏뎁트론으로 XOR기능을 구현해 입증했다. 2개 이상의 계층을 갖는 구조를 활용 다 계층 구조 활용의 최대 걸림돌인 학습 문제를 오류 역전파 알고리즘으로 해결. 비선형 활성화 함수를 도입하여 다양한 함수 기능 구현 -계단함수 대신 시그모이드 함수를 적용 다층 신경망은 초기에 다층 퍼셉트론으로 불렸지만, 시그모이드 함수를 사용하는 신경망은 더 이상 퍼셉트론이 아님.(이진출력이 아니라 0과1사이 모든 값이 나오니까) 따라서 다층 신경망, 일반 신경망(FNN, feedforward neural network: 앞먹임 신경망) 이라고 부름 FNN의 구조 No cycli.. 2023. 4. 19.
퍼셉트론의 학습 퍼셉트론의 학습 퍼셉트론의 학습 알고리즘 개요 -학습 데이터셋 준비(입력,정답) -가중치 초기값 설정 -각 입력에 대해 오차가 감소하도록 가중치 조정 -모든 입력이 정확하게 분류될 때까지 여러번(Many epoch) 반복 학습데이터는 N개의 학습샘플로 구성된다. 각 학습샘플은 퍼셉트론 입력과 정답 쌍(xi,di)으로 구성된다. 각 xi를 퍼셉트론에 입력했을 때 산출되는 yi를 di(정답)와 비교하여 에러를 정정한다. 이 한 번의 과정을 에폭:epoch 라고 한다. 에폭을 많이 돌릴수록 정답에 가까워진다(실제로는 안 그럴수도..) import numpy as np #아래는 학습데이터임 X = np.array([[0,0], [1,0], [0,1], [1,1]]) Y = np.array([-1,-1,-1,1].. 2023. 4. 19.
신경망 신경망(Neural Network) -인간의 두뇌를 모방한 연결주의의 대표적 AI기술 -안정적인 학습 기능, 병렬처리와 에러 감내 등의 장점 -초기부터 음성, 영상, 자연어 처리 등에 많은 응용 신경망 모델링 인공신경망의 학습 : 학습데이터를 입력으로 사용 학습과정에서 학습데이터에서 추출한 지식이 뉴런 간의 연결강도에 반영됨. => 학습은 가중치와 편향을 적합한 값으로 변경하는 작업임 뉴런의 연산 모델 v=(x1*w1+x2*w2+...+xi*wi) + b 가중입력합 v에서 편향을 제외한 값을 순수 가중입력합 이라고 부른다. 편향은 뉴런 입력과 별도로 뉴런에 가해지는 값으로, 순수 가중입력합에 어파인 변환을 적용하는 효과임. 활성화 활성화 함수는 : 입력가중합이 어떻게 처리되는지 결정 응용에 맞는 컴퓨팅 .. 2023. 4. 19.
신경망, 퍼셉트론 생물학적 신경망은 뉴런과 시냅스로 이루어져 있다. 생물학적 신경망을 모사한 인공 신경망을 알아보자. 구분 생물학적 뉴런 인공 뉴럴 네트워크 처리 뉴런 그래프의 노드 뉴런 간 신호전달 시냅스 노드간 연결선(Edge) 학습 시냅스 연결 강도 연결선의 가중치 크기 퍼셉트론은 초기 인공 신경망의 한 종류이다. 퍼셉트론은 입력 벡터(입력 값들의 집합)을 받아 이진 출력을 내는 선형 분류기의 일종이다. x1*w1+x2*w2를 순수가중합이라고 부르는데, 이 값이 임계값보다 작거나 같으면 0, 크면 1이 된다. 여기서 임계값 세타를 좌변으로 넘기면 이것을 편향(bias)이라고 한다. (임계값과 편향은 부호가 반대임) import numpy as np def AND(x1,x2): x=np.array([x1,x2]) #입.. 2023. 4. 19.
넘파이를 알아보자(numpy) 0. 넘파이 임포트하기 import numpy as np (np로 사용하기 위해 as np를 붙임) 1. 넘파이 배열 생성하기 x = np.array([0,10,20,30,40,50]) #파이썬 자료형(리스트)를 넘파이 배열로 변환 print(x) print(type(x.dtype),end='') print(x.shape) np.array()에 리스트를 인자로 넘기면 넘파이 배열로 반환. [ 0 10 20 30 40 50] (6,) 이차원 배열 생성 y= np.array([[0,1,2],[10,11,12]]) #2차원 리스트를 넘파이 배열로 생성 print(y) print(type(y.dtype),end='') #데이터타입 출력 print(y.shape) #행과 열을 출력 z=np.zeros_like(y.. 2023. 4. 18.
Thread Process vs Thread Process : 실행중인 프로그램. 자원할당의 단위 메모리 주소 보호 단위 Thread : 프로세스 내의 가벼운 실행 단위 Light-Weight Process: LWP로도 부름(Solaris의 LWP는 따로 있음..) 스케줄링과 디스패칭의 단위 Multithreaded Processes Benefits 스레드 사용의 이점 Responsiveness Resource sharing Economy Scalability 응답성 :인터랙티브 앱에서는 응답성이 중요하다. 스레드는 프로세스보다 응답이 빠르다. 자원 공유 : 스레드들은 메모리를 공유한다. 경제적이다 :프로세스 생성보다 스레드 생성이 가볍다. 확장성이 좋다 : Three levels of Thread Kernel th.. 2023. 4. 18.
04 - Use Case Diagram 기능을 잘 정리하고 표현하는 방법 -Use case -prototype -natural language Use Case -외부에서 본 시스템의 view, behavior -시스템에 무슨 서비스가 있는지 사용자의 관점에서 본 것(기능중심) -개발 대상이 되는 시스템이 제공하는 개별적인 기능 -시스템의 범위에 해당되어 개발될 시스템의 단위기능 -시스템과 외부 액터 사이의 관계 -목표 지향적 interaction의 집합 UseCase 작성 목적 -시스템의 범위를 정하는데 도움 -개발 과정을 계획하는데 사용 -요구를 개발하고 검증하는데 사용 -테스트케이스를 정의하는 데 기초로 사용 -사용자 메뉴얼 구성하는데 사용 Use case diagram 사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요.. 2023. 4. 16.
03 - UML UML의 개념과 특징 객체지향 개념과 특징 모델링 방법 UML의 개요 UML(Unified Modeling Language) 객체관리그룹 OMG에서 여러 표기법을 통합하여 UML을 발표함. 객체지향 시스템 개발 분야에서 가장 우수한 모델링 언어로 인식되고 있음. 구현에 앞서 표준화되고 이해되기 쉬운 방법으로 소프트웨어를 설계하여 효율적으로 의사소통 할 수 있는 매커니즘 제공) UML의 특징 가시화 언어 명세화 언어 구축 언어 문서화 언어 가시화: 소프트웨어의 개념 모델을 시각적인 그래픽 형태로 작성. 각 symbol에 명확한 정의가 존재함. 개발자 사이에 오류 없는 의사소통 가능 명세화: 정확,명백,완전한 모델을 만들 수 있음. 분석,설계,구현 단계의 각 과정에서 완전하게 명세화 가능 구축 언어: UML.. 2023. 4. 16.
02 - Planning 계획 작업의 단계와 순서 이해 목표 설정과 타당성 분석 규모 산정 일정 계획 조직 구성 새로운 프로젝트를 시작할 때 비즈니스를 이해하고 목표를 정하는 것으로부터 출발. 유행하는 새로운 최신 기술(Buzz word)에 현혹될 수 있지만 활용, 목적 등을 명확하게 가지고 사용해야 함. 실제 IT project의 많은 실패사례들은 -분석 설계에 충분한 관심을 기울이지 않았음: 비즈니스 가치를 찾고 위험분석이 필요 -타당성 검증이 반드시 필요함: 기술적 측면, 경제적 측면, 조직적 측면 planning stage의 스텝 비즈니스 목표 설정 시스템 개발 요청 정의 타당성 분석 프로젝트 개발 일정과 비용 산정 일정 계획 조직 구성 2.1 비즈니스 목표 설정 전략적 계획(Strategic planning) :장기적인.. 2023. 4. 16.
01 1.1 software analysis & design -analysis: 정보 시스템이 무엇을 하여야 하는지 자세히 이해하고 명세로 나타내는 일. -design: 정보 시스템이 어떻게 구현되어야 하는지 자세히 나타내는 일 software designer -비즈니스 니즈를 만족시키기 위하여 분석과 설계 기술을 사용 -소프트웨어를 사용하는 기관에게 이익을 가져다주는 가치의 창출을 목표로 함 -소프트웨어는 단순 도구가 아니라, 기관이 세운 목표에 좋은 성과를 달성하게 하는 통합 요소가 되어야 함 비즈니스 목표 달성을 위해 -정확한 요구분석 -견고한 구조 설계 -구현과 테스트 -깔끔한 UI설계 등이 필요. 1.3 일반적인 시스템 개발 과정 SDLC(software development life cycle) 계.. 2023. 4. 16.
CPU scheduler CPU 스케줄러는 컴퓨터 시스템에서 프로세스의 실행 순서를 결정하고 관리하는 역할을 한다. 시스템의 전체 성능을 최적화하고, 응답 시간을 최소화하며, 자원 사용률을 극대화하는 것이 목표이다 CPU스케줄러는 다음 상황들에서 사용된다 running에서 waiting상태로 스위칭할 때 running에서 ready 상태로 스위칭할 때 waiting에서 ready상태로 스위칭할 때 (선점형인 경우) terminate 시 스케줄러는 선점형/비선점형으로 나눌 수 있다. Dispatcher 디스패쳐는 스케줄러가 선택한 프로세스를 실행하기 위해 CPU를 할당한다. 또한, 다음 프로세스가 실행되기 전에 현재 실행중인 프로세스의 상태를 저장하고, 새로운 프로세스가 이전에 중단한 지점부터 실행될 수 있도록 환경을 설정한다. .. 2023. 4. 5.
htons / inet_addr Struct for Ipv4 Address struct sockaddr_in { sa_family_t sin_family;//주소체계 uint16_t sin_port; //포트번호 struct in_addr sin_addr;//IP주소 char sin_zero[8]; } struct in_addr { in_addr_t s_addr; } struct sockaddr { sa_family_t sin_family; char sa_data[14]; } Host Byte Order / Network Byte Order CPU에 따라서 상위 바위트를 하위 메모리 주소에 저장하기도 하고(빅 엔디안), 상위 바이트를 상위 메모리 주소에 저장하기도 한다(리틀 엔디안). CPU마다 데이터를 표현, 해석하는 방식이 다르다... 2023. 3. 31.
Process and Scheduling 2 Process Termination 프로세스가 종료될 때 프로세스의 자원을 운영체제에 반납해야 한다. 부모 프로세스는 다음과 같은 상황에서 자식 프로세스를 비정상종료 시킬 수 있다. -자식이 할당된 자원 이상을 건들 때 -자식이 더이상 필요 없을 때 부모가 종료되면 자식은 더이상 수행하지 않고 종료된다. 이 때, 자식 프로세스가 종료되지 않으면 고아,좀비 프로세스가 된다. 좀비 프로세스: 메모리의 context는 이미 삭제되었지만 몇 정보들이 남아있다.(PID, exit status, CPU usage: 이들은 부모가 자식 처리를 위해 필요한 정보들임) wait시스템 콜로 자식의 exit tatus를 읽으면 좀비는 없어짐... 좀비/고아 프로세스는 init process(PID 1)이 주기적으로 관리 I.. 2023. 3. 31.
최적 이진 검색 트리/ AVL 트리 최적 이진 검색 트리 최적 이진 탐색 트리(Optimal Binary Search Tree)는 이진 검색 트리(Binary Search Tree, BST)의 일종으로, 주어진 키 집합에 대해 평균 검색 비용이 최소가 되도록 구성된 트리입니다. AVL트리 AVL트리는 이진 탐색 트리의 일종으로, 자동으로 균형을 유지하는 자료구조입니다. 글로 적기 힘들어서 영상으로 찍음. 2023. 3. 29.
퍼셉트론의 이해 퍼셉트론은 인공 신경망 중 하나로, 이진 분류를 위해 사용되는 간단한 알고리즘이다. 퍼셉트론은 다수의 입력값과 가중치(Weight)를 곱한 합을 계산하고, 이 합이 특정 임계값 ㄷ보다 크면 1을, 작으면 0을 출력한다. 이 때 가중치와 임계값을 적절히 조절하여 분류 경계선을 찾아야 한다. AND게이트를 퍼셉트론으로 구현하기 우선 AND게이트의 동작을 살펴보자. x1 x2 y 1 1 1 0 1 0 1 0 0 0 0 0 두 개의 입력(x1, x2)이 주어졌을 때 두 입력이 모두 1일 때만 출력(y)이 1이 되어야 한다. 두 개의 입력 x1, x2에 대한 가중치를 w1, w2라고 하면 가중합은 x1*w1 + x2*w2 이 된다. (이 계산은 np.dot(가중치,입력값) 또는 np.sum(가중치*입력값)과 같다.. 2023. 3. 25.
DHCP DHCP(Dynamic Host Configuration Protocol)는 네트워크 관리를 간편하게 하기 위해 사용하는 프로토콜이다. DHCP를 사용하면 네트워크 장치에 IP주소, 서브넷마스크, 기본 게이트웨이, DNS서버 주소와 같은 네트워크 구성 정보를 자동으로 할당할 수 있다. DHCP를 사용하면 수동으로 각 네트워크 장치의 구성을 변경할 필요가 없으므로 네트워크 관리가 훨씬 편리해진다. 이는 모바일 기기등에도 적용된다. DHCP의 4가지 절차 discover offer request ack 1. DHCP discover: 클라이언트는 DHCP discover 메세지를 브로드캐스트한다. 이 메세지는 클라이언트가 DHCP서버를 찾기 위해 전송된다. (서브넷 내로 브로드캐스트 되며, src의 port.. 2023. 3. 23.
JPA, Spring Data JPA JPA(Java Persistence API)는 객체와 관계형 데이터베이스를 매핑할 때 사용하는 ORM(Object-Relational Mapping)프레임워크이다. JDBC는 자바에서 데이터베이스에 접근하기 위한 API로, 개발자가 SQL쿼리를 직접 작성하여 데이터베이스와 통신한다. JDBC는 개발자가 SQL을 직접 작성하여 데이터베이스와 통신하기 때문에, 데이터베이스 연동 작업을 상세하게 제어할 수 있지만, JDBC를 사용하면 개발자가 매번 SQL을 작성해야 하며, 이로 인해 반복적인 작업이 많아지고 오류 발생 가능성이 높아지기도 한다. 반면, JPA는 엔티티 클래스를 사용하여 데이터베이스의 테이블과 객체간의 매핑을 자동으로 처리한다. 이를 통해 개발자는 객체 지향 프로그래밍 방식으로 데이터베이스와 .. 2023. 3. 21.
Filling Polygons 다각형 채우기. 다각형은 3가지 타입이 있다. 1. Simple Convex: 볼록 다각형 2. Simple Concave: 오목 다각형 3. Non-simple(self-intersection): 내부 교차된 다각형 이런 다각형들의 경계선의 내부를 채우는 알고리즘을 설계해 보자. 몇가지 문제들: 다각형의 윗쪽,오른쪽 경계선은 픽셀을 켜지 않는다. 만약 윗쪽,오른쪽 경계선의 픽셀을 키게되면, double-fill문제가 발생할 수 있는데, 예를들어 두 사각형이 변을 맞대고 붙어있을 때, ① 맞닿은 부분이 깜빡거리는 flicker현상이 발생할 수 있고, ②두번 그리는것 자체가 비효율적이기도 하다. 그러므로 공유엣지에 대한 룰로, 오른쪽 수직엣지, 윗쪽 수평엣지는 그리지 않는다. 다각형을 어떻게 채울까? 주사.. 2023. 3. 20.
Search Structures 1. Symbol Table (키,값)쌍의 모임을 symbol table이라고 한다. 사전에서 특정 단어(키)를 이용하여 뜻(값)을 알아내는 것도 심볼테이블의 응용분야이다. symbol table public class SymbolTable { void put(Key k,Value v); Value get(Key k) boolean contains(Key k) void delete(Key k) boolean isEmpty() int size() Iterator keys() } 심볼테이블은 보통 위와같은 메소드들을 가진다. 여기서는 Generics 지원하며, 중복키는 허용하지 않는다. 만약 중복키가 입력될 경우 기존의 값을 새 값으로 변경한다. 키와 값은 null이 될 수 없고, 테이블에 없는 키값으로 검.. 2023. 3. 20.
의존성 주입(DI), 스프링 빈과 의존관계 의존성 주입(DI)을 간단히 말하면, 클래스에서 필요로 하는 의존성을 직접 생성하지 않고, 외부에서 주입받는 방식이다. 이를 통해 클래스 간의 결합도를 낮추어 유연성을 높일 수 있다. 예를들어, A클래스가 B클래스를 의존한다면, A클래스에서 B클래스의 객체를 생성하고 사용하는것이 아니라, 외부에서 B클래스의 객체를 생성하여 주입하는 방식을 사용하는 것이다. public class UserService { private final UserRepository userRepository = new UserRepositoryImpl(); public void addUser(User user) { userRepository.save(user); } } 예를들어, UserService클래스는 UserReposito.. 2023. 3. 19.
728x90
반응형