본문 바로가기
728x90
반응형

2023-169

기울기 강하 기법 깔끔한 글을 원한다면 아래 더보기를 클릭. 더보기 신경망의 학습은 가중치를 적절하게 조정하는 과정입니다. 이 과정은 순방향 전파(FNN)를 통해 입력에 대한 실제 출력을 계산하고, 이 출력값을 목표 출력값과 비교하는 방식으로 이루어집니다. 추론 결과와 목표값의 차이를 '에러'라고 부르며, 이 에러를 역으로 전파하여 가중치를 조정하는 방식으로 신경망의 학습이 이루어집니다. 이를 통해 가중치를 조정하여 추론값이 목표값과 같아지도록 합니다. 이러한 방법을 '에러 정정 기법'이라고도 합니다. 신경망 학습에서는 '경사하강법'이라는 방법을 사용합니다. 이를 위해 '손실 함수'를 적용해야 합니다. 손실 함수는 목표치(라벨 값)와 실제 출력(추론)간의 차이(손실, 에러)를 계산하는 함수입니다. 이에는 평균제곱오차(MS.. 2023. 6. 12.
TCP congestion control 패킷로스의 대부분은 라우터의 큐 오버플로우로 인해 발생한다. 따라서 ack이 오지 않는것을 congestion의 증거라고 추정한다. ack이 돌아오지 않으면 네트워크에서 congestion이 발생한것으로 추정하고, sender의 window size(한번에 보낼 수 있는 inflight packet 수)를 줄여 전송속도를 낮춘다. 더보기 1980년대 전까지는 congestion control이 적용되지 않았었다. 이 때는 패킷 드랍이 발생하면 재전송하도록 했기 때문에 네트워크가 더 혼잡해져 악순환이 일어났다. sender의 윈도우를 cwnd라고 한다(congestion window) 이 윈도우는 혼잡에 따라 사이즈가 커지고 작아질 수 있다. TCP rate = cwnd/RTT bytes/sec이다. 전송.. 2023. 6. 12.
Connection-oriented transport: TCP, TCP flow control,.. TCP 특성 Point to point: 일대일 통신 Reliable, in-order byte stream: 신뢰성 있는, 순서대로 전송되는 바이트 스트림 Full duplex data: 전이중 데이터 통신 Cumulative ACKs(Ack(10)은 0부터 9까지 잘 받았고, 다음으로 10을 기대하는 의미) Pipelining: 윈도우를 사용하여 효율적인 데이터 전송 Connection-oriented: 연결 지향적 Flow control: 흐름 제어 Congestion Control: 혼잡 제어 TCP segment structure: 소스 포트, 목적지 포트, 시퀀스 번호, ACK 번호, 수신 윈도우, 체크섬, 플래그들, 옵션 등으로 구성 TCP segment structure src port#,.. 2023. 6. 11.
Go-Back-N, Selective Repeat rdt보다 성능이 좋은 reliable 프로토콜이다. 물론 실제로는 TCP를 사용하기때문에 Go-Back-N, Selective Repeat도 실제로 사용되지 않는다. 우선 rdt3.0을 보자. 데이터를 하나 보낼 때마다 피드백(ack)을 기다려야한다. 이것이 모두 딜레이가 된다. 데이터를 보내고부터, 피드백을 받을 때까지의 시간 중, 데이터를 실제 보내는데 걸리는 딜레이를 제외한 낭비되는 시간을 RTT라고 한다. RTT가 너무 크기때문에 sending utilization이 너무 낮은 문제가 있다. 따라서 RTT시간동안 데이터를 계속해서 보내는 방법을 사용할 수 있다. 파이프라이닝: 데이터를 병렬적으로 보냄 인플라이트 패킷: 전송하고 아직 ack을 못 받은 패킷 window: 인플라이트 패킷의 최대 수.. 2023. 6. 11.
Reliable Data Transfer(RDT) 실사용되는 것은 아니지만 TCP와 유사한 가상의 프로토콜 RDT를 알아보자. TCP가 채널을 reliable하게 유지시켜주기 때문에 어플리케이션 레이어는 데이터전송시 신뢰성 있다고만 생각한다. reliable하기 위해서는 아래 두 가지를 해결해야한다. -메시지(패킷) 에러: 비트에러 발생 -메시지(패킷) 로스 (우리는 rdt에서 단방향 통신이라 가정하자) rdt1.0 bit error가 발생하지 않고, 패킷 loss가 발생하지 않는 환경이라고 가정. 환경자체가 reliable하기 기능 없어도 reliable함 rdt2.0 bit error가 발생하는 환경(패킷로스는 일어나지않음) Error detection이 필요함. checksum 필드를 통해서 비트에러가 있는지 판단할 수 있다. receiver는 비.. 2023. 6. 11.
UDP Server & Client UDP 추가기능이 없는 전송프로토콜. 세그먼트가 로스될 수도 있고, 세그먼트 순서가 뒤바뀔수도 있는 서비스이다. TCP는 일대일이라서 여러 호스트가 연결하면 각 클라이언트와의 소켓이 필요하다. UDP는 여러 클라이언트와 통신하기 위해 하나의 소켓만 있으면 된다. UDP는 "Connectionless" 방식으로, 서버,클라이언트 모두 하나의 소켓만 이용하면 된다. sendto() #include ssize_t sendto(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *to,socklen_t addrlen); TCP에서는 socket을 열면서 IP,PORT가 설정되어 write시 따로 이를 설정할 필요가 없었는데, UDP는 accept를 .. 2023. 6. 11.
Transport Layer Basic 줄글로 읽고싶다면 더보기를 클릭. 더보기 Transport layer는 네트워크에서 데이터 패킷을 '세그먼트'라고 부르며, 이는 어플리케이션 레이어로부터 받은 메시지를 세그먼트로 분할하여 네트워크 레이어로 전달합니다. 이 과정은 주로 메시지의 크기 때문에 필요합니다. 트랜스포트 레이어에서 주로 사용되는 두 가지 프로토콜은 TCP와 UDP입니다. TCP는 혼잡 제어, 흐름 제어, 그리고 연결 설정을 담당합니다. 또한, TCP는 신뢰성을 확보하기 위해 라우터에서 발생하는 큐잉 딜레이로 인한 패킷 손실을 감지하고 재전송을 담당하며, 세그먼트가 순서대로 도착하도록 관리합니다. 반면에 UDP는 이러한 TCP의 기능을 제공하지 않습니다. 또한, TCP와 UDP 모두 지연 시간과 대역폭을 보장하지 않습니다. 이는 패.. 2023. 6. 11.
File system and storage management File file은 byte단위로 이루어져 있는 데이터들의 집합. file의 타입은 다음과 같다. Data Program Data file은 텍스트 타입. 아스키 파일이라고도 함.(text type) Program은 바이너리 코드로 이루어짐(binary type) File Structure File Attributes file에 대한 meta data name, identifier, type,location, size, protection, .. location: 파일의 위치 포인터 File Types- Name, Extension 이름과 확장자. 확장자는 OS마다 사용되는것이 다름. 유닉스는 확장자가 없음 UNIX File System 디스크 드라이브가 여러 파티션으로 나뉘어있고, 2023. 6. 10.
Virtual Memory - Page Replacement Virtual Memory : 물리메모리와 논리메모리를 분리. 이들 주소가 1:1로 매치되지 않는다. 가상 메모리는 현재 필요한 메모리 페이지만을 물리 메모리에 유지하고, 나머지는 디스크에 저장함으로써 메모리의 효율적인 사용을 가능하게 한다. 각 프로세스는 자신만의 가상 메모리 공간을 갖게 되어 다른 프로세스의 메모리 영역에 접근하지 못하게 된다. 가상 메모리는 요구 페이징(Demand Paging), 요구 세그멘테이션(Demand segmentation)이라는 두 가지 방식으로 구현될 수 있다. 가상 메모리의 3가지 주요 특징 프로그램 사이즈와 메모리 사이즈는 연관 없다. (프로그램 사이즈가 메모리보다 커도 됨). (디스크를 메모리의 일부처럼 사용하게하는 스왑핑 기능을 적용했기 때문) 한 프로세스는 전.. 2023. 6. 3.
Paging Paging 운영체제에서 메모리 관리를 위해 사용하는 기술 "페이징" 물리 메모리를 동일한 크기의 '페이지'로 분할하고, 각각의 프로세스를 이러한 페이지로 분할하여 메모리를 관리하는 방식이다. (프로그램 한 조각은 page, 메모리의 한 칸은 frame이다) 페이징 시스템은 각 페이지가 메모리의 특정 위치에 연속적으로 위치하지 않는다. 대신 페이지 테이블이라는 데이터 구조를 사용하여 각 페이지의 현재 위치를 추적한다. 페이징시스템은... -외부 단편화가 없다. -내부 단편화는 발생할 수 있으나 단편화의 양이 적다. (마지막 페이지에 한해 생기므로) Temporal Locality Spatial Locality Temporal Locality(시간적 지역성) : 특정 데이터 항목이 한 번 접근된 후, 가까.. 2023. 5. 15.
Memory Management and Virtual Memory 운영체제의 메모리 관리와 가상 메모리는 컴퓨터 시스템의 메모리 자원을 효율적으로 사용하기 위한 핵심 기능이다. Memory Management: 프로세스가 실행되기 위한 메모리를 할당하고 회수하는 것을 담당한다. Virtual Memory: 물리적인 메모리 용량을 초과하는 프로세스의 실행을 가능하게 하는 기술 베이스 레지스터와 리미트 레지스터 쌍으로, 프로세스의 논리적 주소 공간이 정의된다. Binding of Instructions and Data to Memory 바인딩: 프로세스가 메모리에서 실행되기 위해, 명령어와 데이터가 메모리 주소와 연결되는 과정 이러한 바인딩은 크게 세 가지 단계에서 발생할 수 있다. 컴파일 타임 바인딩(Compile time Binding) 로드 타임 바인딩(Load ti.. 2023. 5. 6.
Viewing 3D world on 2D displays 3D viewing은 2D viewing 처리보다 복잡성이 높다. 2D 이미지를 생성하기 위한 과정 1. Specification of Projection Type: 투영 유형을 정한다. : 3D객체를 2D 디스플레이에 출력하기 위해 projection 기법을 사용해야 한다. projection(투영)으로 3D 객체를 2D로 변환할 수 있다. perspective(원근 투영) parallel orthographic(평행 정사영) 2. Specification of Viewing Parameters: 시점 매개변수 지정: 카메라 또는 관찰자의 위치와 방향, 시야 등을 설정한다. 3. Clipping in three Dimension: 3차원 클리핑 시점 매개변수에 따라 3D 공간에서 보이지 않는 객체나 부.. 2023. 5. 6.
CrossDevEnv, Kernel, BootLoader 교차개발 환경 Cross Development Environment 호스트에서 타겟을 위한 소프트웨어 개발을 수행하는 것. Tool Chain 컴파일, 빌드 과정에 필요한 도구, 라이브러리의 모음이다. TFTP 단순한 파일 전송 프로토콜 최소한의 메모리와 자원을 사용한다. 오류 복구 기능이 없다 보안 기능이 없다 NFS(network file system) 원격 시스템의 파일을 로컬 시스템처럼 접근할 수 있게 해주는 네트워크 파일 공유 프로토콜 클라이언트-서버 모델을 사용 Bootp 네트워크 환경에서 원격으로 시스템을 부팅하기 위한 프로토콜 라즈베리파이 부팅 First stage bootloader (부트롬): Raspberry Pi에 전원이 공급되면, SoC(System on Chip)의 내장 부트롬(.. 2023. 4. 25.
Embedded Linux Operating System -자원관리 -어플리케이션과 유저에게 서비스 제공(편리한 컴퓨팅 환경) 자원은 물리적 자원, 가상 자원으로 나눌 수 있음 물리자원: Processor, Memory, Disk,.. 가상자원: tasks, segments/pages, files, drivers, ... 임베디드 시스템과 OS OS없이 개발 가능 (아두이노 등) 장점: 개발이 쉽고 간단하다. 작고 최적화된 코드 단점: 복잡한 시스템을 개발하기 힘들다. 메모리,파일 관리가 힘들다. 배우기 힘들다.(HW에 관한 이해가 필요) OS OS의 종류 Android, IOS, Windows, RTOS(Real-Time OS): VxWorks, pSOS ... , UNIX, LINUX 임베디드 시스템에서 OS는 시스템이 커지면.. 2023. 4. 25.
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.
728x90
반응형